c_cpp 572.另一棵树的子树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 572.另一棵树的子树相关的知识,希望对你有一定的参考价值。
//Runtime: 28 ms, faster than 30.42%
class Solution {
public:
bool isSubtree(TreeNode* s, TreeNode* t) {
if(!s) return false;
if(isSame(s,t)) return true;
return isSubtree(s->left,t) || isSubtree(s->right,t);
}
bool isSame(TreeNode* s,TreeNode* t){
if(!s && !t) return true;
if(!s || !t) return false;
if(s->val != t->val) return false;
return isSame(s->left,t->left) && isSame(s->right,t->right);
}
};
//Runtime: 28 ms, faster than 30.42%
class Solution {
vector<TreeNode*> nodes;
public:
bool isSubtree(TreeNode* s, TreeNode* t) {
if(!s && !t) return true;
if(!s || !t) return false;
getDepth(s,getDepth(t,-1));
for(TreeNode* n : nodes)
if(identical(n,t))
return true;
return false;
}
int getDepth(TreeNode* r,int d){
if(!r)
return -1;
int depth = max(getDepth(r->left,d),getDepth(r->right,d)) + 1;
if(depth == d)
nodes.push_back(r);
return depth;
}
bool identical(TreeNode* a,TreeNode* b){
if(!a && !b) return true;
if(!a || !b || a->val != b->val) return false;
return identical(a->left,b->left) && identical(a->right,b->right);
}
};
以上是关于c_cpp 572.另一棵树的子树的主要内容,如果未能解决你的问题,请参考以下文章
572. 另一棵树的子树
572. 另一棵树的子树
572. 另一棵树的子树
572. 另一棵树的子树
572. 另一棵树的子树
LeetCode Algorithm 572. 另一棵树的子树