博客
关于我
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/

    你可能感兴趣的文章
    安装jdk并配置环境变量
    查看>>
    稀疏数组
    查看>>
    js的严格模式
    查看>>
    ETL工具-KETTLE教程实例实战1----术语和定义
    查看>>
    idea的安装和无限期试用
    查看>>
    Oracle VM VirtualBox安装PVE虚拟机
    查看>>
    【转】如何用css限制文字长度,使溢出的内容用省略号…显示
    查看>>
    Android MediaPlayer setDataSource failed
    查看>>
    [Vue 牛刀小试]:第十二章 - 使用 Vue Router 实现 Vue 中的前端路由控制
    查看>>
    ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
    查看>>
    【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
    查看>>
    如何查看jsplumb.js的API文档(YUIdoc的基本使用)
    查看>>
    大前端的自动化工厂(1)——Yeoman
    查看>>
    数据仓库建模方法论
    查看>>
    数据仓库之拉链表
    查看>>
    虚拟机搭建hadoop环境
    查看>>
    redis 删除大key集合的方法
    查看>>
    DataStax Bulk Loader教程(三)
    查看>>
    DataStax Bulk Loader教程(四)
    查看>>
    物联网、5G世界与大数据管理
    查看>>