。。。剑指Offer之——树的子结构。。。

 1 //    遍历整个树
 2     public boolean HasSubtree(TreeNode root1, TreeNode root2) {
 3         boolean result = false;
 4 //        如果root1,root2中只要有一个是null,则返回false
 5         if (root1 != null && root2 != null) {
 6 //            找到两个数值相同的根节点
 7             if (root1.val == root2.val) {
 8 //                判断以这个根节点的子树,是否包含root2
 9                 result = doesTree1HasTree2(root1, root2);
10             }
11 //            如果不包含,则继续到root1的左边去查找与root2根结点相同的节点
12             if (!result) {
13                 result = HasSubtree(root1.left, root2);
14             }
15 //            如果不包含,则继续到root1的右边去查找与root2根结点相同的节点
16             if (!result) {
17                 result = HasSubtree(root1.right, root2);
18             }
19         }
20         return result;
21     }
22
23     public boolean doesTree1HasTree2(TreeNode root1, TreeNode root2) {
24 //        如果子树为空,则返回true
25         if (root2 == null) {
26             return true;
27         }
28 //        走到这里,说明root2不为空,而如果roo1为空,则返回false
29         if (root1 == null) {
30             return false;
31         }
32 //        走到这里,说明root1,root2均不为空,判断它们的值是否相等
33         if (root1.val != root2.val) {
34             return false;
35         }
36 //        如果root1的值=root2的值,则递归判断root1的左边和root2的做左边
37 //        如果root1的值=root2的值,则递归判断root1的右边和root2的做右边
38         return doesTree1HasTree2(root1.left, root2.left) &&
39                 doesTree1HasTree2(root1.right, root2.right);
40     }

原文地址:https://www.cnblogs.com/yingmeng/p/10778229.html

时间: 2024-08-25 18:51:13

。。。剑指Offer之——树的子结构。。。的相关文章

【剑指offer】树的子结构

转载请注明出处:http://blog.csdn.net/ns_code/article/details/25907685 剑指offer第18题,九度OJ上测试通过! 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n,m(1<=n<=1000,1<=m<=1000):n代表将要输入的二叉树A的节点个数(节点从1开始计数),m代表将要输入的二叉树B的节点个数(节点从1开始计数).

剑指OFFER之树的子结构(九度OJ1520)

题目描述: 输入两颗二叉树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个节点的子孩子个数,接下来有Ki个树,代表节点i子孩子节点标号.接下来m+1行,与

剑指offer之树的子结构

题目: 树的子结构 链接: https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&tqId=11170&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 思路: 分为两步: 第一步:

python剑指offer 实现树的子结构

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def HasSubtree(self, pRoot1, pRoot2): # write code here if not

剑指Offer 17. 树的子结构 (二叉树)

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目地址 https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&tqId=11170&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 思路 如果树1或树2为空时,返回False 在树

剑指offer:树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def HasSubtree(self, pRoot1, pRoot2): def helper(root1, root2): # 如果root2已经遍历完了,说明root2的每一个节点都能在p

《剑指offer》-树的子结构

题目描述 输入两颗二叉树A,B,判断B是不是A的子结构. 解法:就是先找到相等的根节点,然后再子树遍历.所以要用到两个递归函数,根节点的递归函数,子树的递归函数. 注意子树的递归函数中应该先判断子树是否遍历完为空,则返回true,每次遍历前都应该判断根节点是否存在.这样就完美了. /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(N

[剑指Offer] 17.树的子结构

[思路]要查找树A中是否存在和树B结构一样的子树,可以分成两步: 1.第一步在树A中找到和B的根节点的值一样的结点R:即当前树A包含子树B,HasSubtree(...) 2.第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构.即当前树A是否是子树B,IsSubtree(...) 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x

剑指OFFER之树的子结构(九度OJ1520)踪仔酌滓滓驻

http://blog.csdn.net/kangmiao89757/article/details/43390691 http://blog.csdn.net/kangmiao89757/article/details/43390495 http://blog.csdn.net/kangmiao89757/article/details/43390161 http://blog.csdn.net/kangmiao89757/article/details/43389909 http://blo