输入:两棵二叉树 p、q
要求:判断两棵树是否结构相同且节点值全部相同
输出:true / false
思路:题目要求直接,只需要遍历递归进行判断:
-
树的结构必须完全一致
-
对应位置的节点值必须相同
对当前两个节点 p 与 q:
-
两者都为空 → 相同
-
一个空一个非空 → 不相同
-
值不同 → 不相同
-
否则继续判断:
-
左子树是否相同
-
右子树是否相同
-
复杂度:
时间复杂度:O(n)
空间复杂度:O(h)
class Solution {
public:
bool order(TreeNode* p, TreeNode* q) {
if (!p && !q) {
return true;
}
else if ((!p && q) || (p && !q)) {
return false;
}
else if (p->val == q->val) {
}
else if (p->val != q->val) {
return false;
}
return order(p->left, q->left) && order(p->right, q->right);
}
bool isSameTree(TreeNode* p, TreeNode* q) {
return order(p, q);
}
};
1633

被折叠的 条评论
为什么被折叠?



