leetcode 100.相同的树

这篇具有很好参考价值的文章主要介绍了leetcode 100.相同的树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

涉及到递归,最好多画图理解,希望对你们有帮助


100.相同的树

题目

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文字 和 画图 分析

  1. 思考递归进行的条件和结束的条件是什么
  2. 列举递归可能会出现的情况

针对上面两个问题进行解答:

要想找两个树的结构相同有点麻烦,换个思路,我们找它们不同

所以我们需要先对比两者的根节点,再去对比左子树和右子树

[很明显,我们采取的是 前序 遍历整个节点]

  • 在递归的时候,每一次根节点都发生变化,只要根节点对应的数值不同, 就返回 false 结束递归 (其中一种结束条件)

leetcode 100.相同的树,leetcode,数据结构

  • 根节点相同,我们无法判断是否两个树结构相同,只能继续递归(这是递归条件)
  • 递归期间,我们还可能碰到以下情况:

leetcode 100.相同的树,leetcode,数据结构

如上图:我们遇到空树了

这里还需要分两种情况讨论:

如果两个树在这个节点都是空,则返回 true (这是其中一种结束条件)

[注意:我们是先对比根,再对比左子树,最后对比右子树,所以只有左子树和右子树都为 true 才是一样的树]

如果两个树只有一个为空,则返回 false (这是其中一种结束条件)

  3. 判断的顺序问题

由于可能会遇到空树,先比较根的大小明显是不行的,所以应该把比较是否是空树的条件放前面文章来源地址https://www.toymoban.com/news/detail-753822.html


代码

bool isSameTree(struct TreeNode* p, struct TreeNode* q) 
{
    if ((p == NULL && q != NULL) || (p != NULL && q == NULL))
	{
		return false;
	}
	if (p == NULL && q == NULL)
	{
		return true;
	}
	if (p->val != q->val)
	{
		return false;
	}
	return isSameTree(p->left, q->left)  && 
	isSameTree(p->right, q->right);
}

到了这里,关于leetcode 100.相同的树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode做题笔记100. 相同的树

    给你两棵二叉树的根节点  p  和  q  ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 首先判断两个二叉树是否为空,再判断有值的情况,利用递归,若两个值相等则同时向左右子树继续进行判断 本题考

    2024年02月11日
    浏览(27)
  • 【数据结构】单值二叉树 & 相同的树 & 翻转二叉树(五)

      目录 一,单值二叉树 题目详情: 解法:父子比较法 解题思路: 思路实现: 源代码: 二,相同的树 题目详情: 解法:比较法 解题思路: 思路实现: 源代码: 三,翻转二叉树 解法:替换法 解题思路: 思路实现: 源代码: 题目详情: 如果 二叉树 每个节点都具有 相

    2024年02月07日
    浏览(30)
  • 二叉树OJ题:LeetCode--100.相同的树

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第100道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通 LeetCo

    2024年02月11日
    浏览(27)
  • 100. 相同的树

     

    2024年02月12日
    浏览(24)
  • leetcode-相同的树

    100. 相同的树 使用递归的方法

    2024年01月24日
    浏览(31)
  • leetcode_19_相同的树

    2024年02月07日
    浏览(32)
  • 【Leetcode】相同的树、对称二叉树、另一颗树的子树

    目录 💡相同的树 题目描述 思路: 代码: 💡对称二叉树 题目描述 思路: 代码: 💡另一棵树的子树 题目描述 思路: 代码: 💡总结   给你两棵二叉树的根节点  p  和  q  ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则

    2024年02月04日
    浏览(33)
  • 代码随想录额外题目| 二叉树 ●129求根到叶数字之和 ●1382二叉树变平衡●100相同的树

    #129求根到叶数字之和 回溯放进vector,然后从后往前拿,乘1 10 100 ... 很基础的回溯 my code: 随想录跟我思路差不多,但这两个是放globa的:int result; vectorint path; 最近总觉得global不安全不想放  #1382二叉树变平衡 本来遇到这种会换root的就头疼,然后看了眼随想录,是要先变成

    2024年02月14日
    浏览(22)
  • 〖数据结构〗一棵有点自律的树——搜索二叉树

    🌸作者简介: 花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸 本文收录于 C++系列 ,本专栏主要内容为 C++ 初阶、C++ 进阶、STL 详解等,专为大学生打造全套 C++ 学习教程,持续更新! 🌸 相关专栏推荐: C语言初阶系列 、 C语言进阶系列 、 数据结构与算法 、 Linu

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包