Subtree
来源:互联网 发布:数据分析师需要学什么 编辑:程序博客网 时间:2024/05/20 09:48
You have two every large binary trees: T1
, with millions of nodes, and T2
, with hundreds of nodes. Create an algorithm to decide if T2
is a subtree of T1
.
Yes
Example
T2 is a subtree of T1 in the following case:
1 3 / \ / T1 = 2 3 T2 = 4 / 4
T2 isn't a subtree of T1 in the following case:
1 3 / \ \T1 = 2 3 T2 = 4 / 4
Note
A tree T2 is a subtree of T1 if there exists a node n in T1 such that the subtree of n is identical to T2. That is, if you cut off the tree at node n, the two trees would be identical.
题目实际上是sameTree的变形,树T2如果是另外树T1的子树,那么在T1中一定可以找到一颗子树与T2一样,那就是说,我们可以递归的检查,如果T1->val == T2->val,则应该检查isSameTree(T1, T2);如果不相等,则还应该继续递归检查isSubTree(T1->left, T2) || is SubTree(T1->right, T2)。应该属于常规的树的问题,注意各个细节的考虑。
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */class Solution {public: /** * @param T1, T2: The roots of binary tree. * @return: True if T2 is a subtree of T1, or false. */ bool isSameTree(TreeNode *T1, TreeNode *T2) { if(T1 == NULL && T2 == NULL) return true; if(T1 == NULL || T2 == NULL) return false; if(T1->val != T2->val) return false; return isSameTree(T1->left, T2->left) && isSameTree(T1->right, T2->right); } bool isSubtree(TreeNode *T1, TreeNode *T2) { // write your code here if(T2 == NULL) return true; if(T1 == NULL) return false; if(T1->val == T2->val && isSameTree(T1, T2)) return true; return isSubtree(T1->left, T2) || isSubtree(T1->right, T2); }};
0 0
- Subtree
- Subtree
- subTree
- #245 Subtree
- Minimum Subtree
- Minimum Subtree
- minimum subtree
- max sum of subtree
- max sum of subtree
- Find minimal subtree
- 代码面试题:Subtree
- Subtree(java)
- 【Lintcode|leetcode】245 Subtree
- git subtree 的使用方法
- git subtree用法
- UVa 11597 - Spanning Subtree
- Binary Tree---Subtree
- Largest BST Subtree
- 上传文件到Github
- 用Database Configuration Assistant (DBCA)配置oracle(中文)
- iOS开发之获取沙盒路径
- 微信红包程序 java
- libapr (apache portable runtime) 编程指南
- Subtree
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
- swift中tabbar切换页面动画
- Windows10占用80端口,Apache无法启动的解决办法
- mysql 违反注入 问题
- eclipse adt 升级后运行报错
- mantis报表中文乱码解决方法
- 南邮 OJ 1217 双色Hanoi塔问题
- 关于scheme的缩写