您的位置:首页 > 其它

LintCode 子树

2016-04-11 11:07 337 查看

easy 子树

19%通过有两个不同大小的二进制树:
T1
有上百万的节点;
T2
有好几百的节点。请设计一种算法。判定
T2
是否为
T1
的子树。您在真实的面试中是否遇到过这个题?Yes例子以下的样例中 T2 是 T1 的子树:
1                3
/ \              /
T1 = 2   3      T2 =  4
/
4
以下的样例中 T2 不是 T1 的子树:
1               3
/ \               \
T1 = 2   3       T2 =    4
/
4
/*** 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 isSubtree(TreeNode *T1, TreeNode *T2) {bool result  = false;if (T2 == nullptr) {return true;}if (T1 == nullptr) {return false;}// write your code hereif (T1->val == T2->val) {result = dp(T1,T2);}if (!result) {result =  isSubtree(T1->left,T2);}if (!result) {result =  isSubtree(T1->right,T2);}return result;}bool dp (TreeNode *T1, TreeNode *T2) {if (T1 != nullptr && T2!=nullptr && T1->val == T2->val) {return dp(T1->left,T2->left) && dp (T1->right,T2->right);}if (T1 == nullptr && T2 == nullptr) {return true;}return false;}};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: