剑指offer面试题18-树的子结构】的更多相关文章

问题描述: 输入两棵二叉树A和B,判断B是不是A的子结构.二叉树结点的定义如下: public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 思路1: 递归 public static boolean HasSubtree(TreeNode root1,TreeNode root2) { boolea…
剑指Offer - 九度1520 - 树的子结构2013-11-30 22:17 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n,m(1<=n<=1000,1<=m<=1000):n代表将要输入的二叉树A的节点个数(节点从1开始计数),m代表将要输入的二叉树B的节点个数(节点从1开始计数).接下来一行有n个数,每个数代表A树中第i个元素的数值,接下来有n行,第一个数Ki代表第i…
// 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include <cstdio> #include "List.h" void DeleteDuplication(ListNode** pHead) { if(pHead == nullptr || *pHead == nullptr) return; ListNode* pPreNode =…
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目分析 分析如何判断树B是不是树A的子结构,只需要两步.很容易看出来这是一个递归的过程.一般在树的求解方面都和递归有关. Step1.在树A中找到和B的根结点的值一样的结点R: Step2.判断树A中以R为根结点的子树是不是包含和树B一样的结点. 代码 /* function TreeNode(x) { this.val = x; this.left = null; this.right =…
  题目描述:   输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构)   解题思路:   要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步,在树A中找到和树B的根结点值一样的结点R:第二步,判断树A中以R为根结点的子树是不是包含和树B一样的结构.   对于这两步,第一步实际上就是树的遍历,第二步是判断是否有相同的结构,这两步都可以通过递归来实现.   举例:   编程实现(Java): public boolean HasSubtree…
要求 给定单向链表的头指针和一个节点指针,在O(1)时间内删除该节点 常规思路:从头节点a开始顺序遍历,发现p指向要删除的节点i,然后把p的m_pNext指向i的下一个节点j,时间复杂度O(n) O(1)的思路:把i的下一个节点j的内容复制到i,然后令i指向j的下一个节点 考虑特殊情况: 链表只有一个节点:删除该节点 删除尾节点:遍历至倒数第二个节点,删除 DeleteNodeList.cpp 1 #include <cstdio> 2 #include "List.h"…
#include"List.h" void DeleteNode(ListNode** pHead,ListNode* pToBeDeleted) { if(*pHead==nullptr || pToBeDeleted==nullptr) return; if(pToBeDeleted->m_pNext!=nullptr) { ListNode* pNext=pToBeDeleted->m_pNext; pToBeDeleted->m_pNext=pNext->…
类似于字符串的匹配,我们总是找到第一个匹配的字符,在继续比較以后的字符是否所有同样,假设匹配串的第一个字符与模式串的第一个不同样,我们就去查看匹配串的下一个字符是否与模式串的第一个同样,相应到这里,就是我们要遍历root1,找到与root2同样的第一个结点,若root1的根不同样,那么我们查找其左子树是否有第一个同样的,同样的操作再去看右子树是否有同样的第一个,若找到了第一个同样的,与字符串匹配思想一样,字符串匹配中,是比較以后的字符是否所有同样,这里我们比較其左右子树是否 也相应同样,若找到了…
剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树:                                            10                                          /     \                                        6        14   …
剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个数字都互不相同. 提交网址: http://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176 二叉搜索树(英语:Binary Search Tree),也称二叉查找树.有序二叉树(英语:orde…