博客
关于我
LeetCode:100. Same Tree相同的树(C语言)
阅读量:387 次
发布时间:2019-03-05

本文共 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。
  • 总结

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

    转载地址:http://yvdzz.baihongyu.com/

    你可能感兴趣的文章
    程序员应该知道的97件事
    查看>>
    create-react-app路由的实现原理
    查看>>
    openstack安装(九)网络服务的安装--控制节点
    查看>>
    shell编程(六)语言编码规范之(变量)
    查看>>
    vimscript学习笔记(二)预备知识
    查看>>
    Android数据库
    查看>>
    HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
    查看>>
    STM8 GPIO模式
    查看>>
    23种设计模式一:单例模式
    查看>>
    Qt中的析构函数
    查看>>
    三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
    查看>>
    【单片机开发】智能小车工程(经验总结)
    查看>>
    【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
    查看>>
    C++&&STL
    查看>>
    微信js-sdk使用简述(分享,扫码功能等)
    查看>>
    c++中ifstream及ofstream超详细说明
    查看>>
    web项目配置
    查看>>
    基于单片机简易信号误差分析设计-全套资料
    查看>>
    基于单片机简易脉搏测量仪系统设计-毕设课设资料
    查看>>
    Javascript中String支持使用正则表达式的四种方法
    查看>>