LeetCode:100. Same Tree相同的树(C语言)
发布日期:2021-05-08 18:43:43 浏览次数:12 分类:精选文章

本文共 943 字,大约阅读时间需要 3 分钟。

给定两个二叉树,编写一个函数来判断它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

问题分析

判断两个二叉树是否相同,需要满足以下条件:

  • 树的结构相同,即节点的左、右子节点对应。
  • 节点的值相同。
  • 解决思路

    我们可以使用递归的方法来解决这个问题。递归的终止条件是:

    • 当两个树中的一个为空时,另一个不为空,则它们不同。
    • 当两个树的值不相同时,它们不同。
    • 如果两个树的值相同时,再分别递归检查左子树和右子树是否相同。

    递归的步骤:

  • 检查两个节点是否都为空,返回true。
  • 检查两个节点中的一个为空,返回false。
  • 比较两个节点的值,如果不等,返回false。
  • 递归检查左子树和右子树是否相同。
  • 代码实现

    #include 
    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; } else if (p == NULL || q == NULL) { return false; } else if (p->val != q->val) { return false; } else { return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); }}

    测试用例

  • 示例1

    • 输入:两个完全相同的二叉树。
    • 输出:true。
  • 示例2

    • 输入:结构不同的二叉树,值部分重叠。
    • 输出:false。
  • 示例3

    • 输入:结构相同但值不同的二叉树。
    • 输出:false。
  • 边界情况

    • 两个空树:返回true。
    • 一个空树,另一个非空:返回false。
    • 单节点树:返回true。
  • 总结

    该函数通过递归检查两个二叉树的结构和节点值,能够准确判断两棵树是否相同。

    上一篇:LeetCode:1323. Maximum 69 Number6 和 9 组成的最大数字(C语言)
    下一篇:LeetCode:622. Design Circular Queue设计循环队列(C语言)

    发表评论

    最新留言

    逛到本站,mark一下
    [***.202.152.39]2025年04月04日 18时01分52秒