题解 | #判断t1树中是否有与t2树完全相同的子树#
判断t1树中是否有与t2树完全相同的子树
http://www.nowcoder.com/practice/4eaccec5ee8f4fe8a4309463b807a542
递归判断
很简单的想法,若root1和root2的值相同,判断root1的左子树和root2的左子树是否一致,以及他们的右子树是否一致;若root1的值和root2的值不一致,判断root1的左子树是否含有root2,或者root1的右子树是否含有root2。
代码如下:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root1 TreeNode类
* @param root2 TreeNode类
* @return bool布尔型
*/
bool isContains(TreeNode* root1, TreeNode* root2) {
// write code here
bool flag = false;
if(!root1 && !root2) flag = true;
if(root1 && root2){
if(root1->val == root2->val){
flag = isContains(root1->left, root2->left) && isContains(root1->right, root2->right);
}else{
flag = isContains(root1->left, root2) || isContains(root1->right, root2);
}
}
return flag;
}
};