LintCode245子树
来源:互联网 发布:淘宝客营销案例 编辑:程序博客网 时间:2024/06/01 10:48
有两个不同大小的二叉树: T1
有上百万的节点; T2
有好几百的节点。请设计一种算法,判定 T2
是否为 T1
的子树。
注意事项
若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。
样例
下面的例子中 T2 是 T1 的子树:
1 3 / \ / T1 = 2 3 T2 = 4 / 4
下面的例子中 T2 不是 T1 的子树:
1 3 / \ \T1 = 2 3 T2 = 4 / 4
思路:先递归找到T1中与T2头结点相同的节点,然后再同步进行递归遍历。
python AC代码:
"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""class Solution: """ @param: T1: The roots of binary tree T1. @param: T2: The roots of binary tree T2. @return: True if T2 is a subtree of T1, or false. """ def isSubtree(self, T1, T2): # write your code here if T2 is None: return True if T1 is None: return False if self.isEquals(T1,T2): return True if self.isSubtree(T1.left,T2) or self.isSubtree(T1.right,T2): return True return False def isEquals(self,T1,T2): if T1 is None or T2 is None: return T1 == T2 if T1.val != T2.val: return False return self.isEquals(T1.left,T2.left) and self.isEquals(T1.right,T2.right)
阅读全文
0 0
- Lintcode245.子树
- LintCode245子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- java常用类--日期和时间
- 【机器学习】归一化
- Java入门学习(一)
- 安卓打包遇到的问题
- java基础之运算符
- LintCode245子树
- Unity Shader 学习笔记(15) 立方体纹理、反射、折射、菲涅尔反射
- 整理几篇关于g2o的博客
- DeepDive学习
- Linux系统介绍--综述
- php下载文件
- Recurrences UVA
- SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3:
- Selenium 自动化测试从零实战