分析
-
本题的考点:二叉树。
-
递归判断:两个二叉树相等,当且仅当根节点的值相等,且左右两个子树分别相等。
代码
- C++
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if (!p && !q) return true;
if (!p || !q || p->val != q->val) return false;
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
};
- Java
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null) return true;
if (p == null || q == null || p.val != q.val) return false;
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
}
时空复杂度分析
-
时间复杂度:$O(n)$,
n
为树中节点数。 -
空间复杂度:$O(h)$,
h
为树高。