一棵二叉树和另一棵二叉树相等,当且仅当它们的根节点相等,并且左子树和右子树也相等。因此,可以通过递归的方式比较两棵二叉树是否相等。

具体实现如下:

  1. 如果两棵二叉树都为空,则它们相等,返回 true。
  2. 如果两棵二叉树中只有一棵为空,则它们不相等,返回 false。
  3. 如果两棵二叉树的根节点值不相等,则它们不相等,返回 false。
  4. 递归比较两棵二叉树的左子树和右子树是否相等,如果都相等,则它们相等,返回 true,否则返回 false。

代码实现如下:

bool isSameTree(TreeNode* p, TreeNode* q) {
    if (!p && !q) {
        return true; // 两棵二叉树都为空,它们相等
    }
    if (!p || !q) {
        return false; // 两棵二叉树中只有一棵为空,它们不相等
    }
    if (p->val != q->val) {
        return false; // 两棵二叉树的根节点值不相等,它们不相等
    }
    return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); // 递归比较左子树和右子树是否相等
}

原文地址: https://www.cveoy.top/t/topic/nF9o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录