二叉树习题精讲-相同的树

相同的树

100. 相同的树 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/same-tree/description/

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
    if (p == NULL && q == NULL)
        return true;
    if (p == NULL || q == NULL)
        return false;
    if (p->val != q->val)
        return false;
    return isSameTree(p->left,q->left) &&  isSameTree(p->right,q->right);
}

解释:

  1. bool isSameTree(struct TreeNode* p, struct TreeNode* q)

    • 这是函数的声明行,定义了一个名为 isSameTree 的函数。它接收两个参数,分别是指向 TreeNode 结构体的指针 p 和 q,表示要比较的两棵树的根节点。函数返回一个布尔值 bool,如果两棵树相同则返回 true,否则返回 false
  2. if (p == NULL && q == NULL)

    • 这行代码检查两个节点 p 和 q 是否都为空。如果都为空,说明两棵树在当前节点上是相同的(都是空树),因此返回 true
  3. if (p == NULL || q == NULL)

    • 这行代码检查两个节点 p 和 q 中是否有一个为空而另一个不为空。如果存在这样的情况,说明两棵树至少在当前节点上就不同,因此返回 false
  4. if (p->val != q->val)

    • 这行代码检查两个节点 p 和 q 的值是否不同。如果值不同,说明两棵树在当前节点上不相同,因此返回 false
  5. return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);

    • 如果当前节点 p 和 q 都不为空且值相同,这行代码递归地调用 isSameTree 函数,分别比较 p 的左子节点和 q 的左子节点,以及 p 的右子节点和 q 的右子节点。只有当左子树和右子树都相同,整个树才被认为是相同的,因此返回两个递归调用的结果的逻辑与(&&)。

总结来说,isSameTree 函数通过递归的方式比较两棵树的每个节点。首先检查当前节点是否为空,如果不为空再检查节点的值是否相同。如果所有对应的节点都相同,那么函数返回 true,表示两棵树相同;如果任何一对对应节点不同,函数返回 false,表示两棵树不同。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值