class Solution {
public:
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
int getHeight(TreeNode* root)
{
if (root == nullptr) return 0;
else
{
int left = getHeight(root->left);
int right = getHeight(root->right);
return max(left, right) + 1;
}
}
bool compare(TreeNode* p, TreeNode* q)
{
if (p == nullptr && q == nullptr)
return true;
else if (p == nullptr && q != nullptr)
return false;
else if (q == nullptr && p != nullptr)
return false;
else if (p->val != q->val)
return false;
else
{
int leftSide = compare(p->left, q->left);
int rightSide = compare(p->right, q->right);
return leftSide && rightSide;
}
}
bool isSubtree(TreeNode* root, TreeNode* subRoot) {
if (root == nullptr && subRoot == nullptr)
return true;
else if (root == nullptr && subRoot != nullptr)
return false;
else if (root != nullptr && subRoot == nullptr)
return false;
else if (getHeight(root) < getHeight(subRoot))
return false;
else if (getHeight(root) > getHeight(subRoot))
{
bool left = isSubtree(root->left, subRoot);
bool right = isSubtree(root->right, subRoot);
return left || right;
}
else //两树高度相同
{
if (compare(root, subRoot))
return true;
else
return false;
}
}
};
LeetCode572.另一棵树的子树
最新推荐文章于 2024-08-10 15:25:17 发布