
二叉树
文章平均质量分 86
陌然。。
这个作者很懒,什么都没留下…
展开
-
【108. 将有序数组转换为二叉搜索树 简单】
106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 中等654.最大二叉树 中等中其实已经讲过了,如果根据数组构造一棵二叉树。该题与上述两题思路一样,注意循环不变量原则。原创 2025-01-09 17:01:34 · 323 阅读 · 0 评论 -
【669. 修剪二叉搜索树 中等】
修剪二叉搜索树其实并不难,但在递归法中如何删除节点的,这个思路其实是比较绕的。原创 2025-01-07 22:19:07 · 1012 阅读 · 0 评论 -
【450. 删除二叉搜索树中的节点 中等】
读完本篇,会发现二叉搜索树删除节点比增加节点复杂的多。因为二叉搜索树添加节点只需要在叶子上添加就可以的,不涉及到结构的调整,而删除节点操作涉及到结构的调整。这里我们依然使用递归函数的返回值来完成把节点从二叉树中移除的操作。这里最关键的逻辑就是第五种情况(删除一个左右孩子都不为空的节点),这种情况一定要想清楚。而且就算想清楚了,对应的代码也未必可以写出来,所以这道题目既考察思维逻辑,也考察代码能力。迭代法就是模拟递归法中的逻辑来删除节点,但需要一个pre记录cur的父节点,方便做删除操作。原创 2025-01-07 21:38:43 · 1061 阅读 · 0 评论 -
【701. 二叉搜索树中的插入操作 中等】
首先在二叉搜索树中的插入操作,不用恐惧其重构搜索树,其实根本不用重构。然后在递归中,重点讲了如何通过递归函数的返回值完成新加入节点和其父节点的赋值操作,并强调了搜索树的有序性。最后依然给出了迭代的方法,迭代的方法就需要记录当前遍历节点的父节点了,这个和没有返回值的递归函数实现的代码逻辑是一样的。原创 2025-01-07 11:32:55 · 640 阅读 · 0 评论 -
【235. 二叉搜索树的最近公共祖先 中等】
对于二叉搜索树的最近祖先问题,其实要比普通二叉树公共祖先问题简单的多。不用使用回溯,二叉搜索树自带方向性,可以方便的从上向下查找目标区间,遇到目标区间内的节点,直接返回。最后给出了对应的迭代法,二叉搜索树的迭代法甚至比递归更容易理解,也是因为其有序性(自带方向性),按照目标区间找就行了。原创 2025-01-06 22:26:56 · 1197 阅读 · 0 评论 -
【236. 二叉树的最近公共祖先 中等】
归纳如下三点:求最小公共祖先,需要从底向上遍历,那么二叉树,只能通过后序遍历(即:回溯)实现从底向上的遍历方式。在回溯的过程中,必然要遍历整棵二叉树,即使已经找到结果了,依然要把其他节点遍历完,因为要使用递归函数的返回值(也就是代码中的left和right)做逻辑判断。要理解如果返回值left为空,right不为空为什么要返回right,为什么可以用返回right传给上一层结果。迭代法不适合模拟回溯的过程。理解递归的解法就够了。原创 2025-01-06 21:12:09 · 1001 阅读 · 0 评论 -
【501. 二叉搜索树中的众数 简单】
本题在递归法中,给出了如果是普通二叉树,应该怎么求众数。知道了普通二叉树的做法时候,再进一步给出二叉搜索树又应该怎么求众数,这样鲜明的对比,相信会对二叉树又有更深层次的理解了。在递归遍历二叉搜索树的过程中,还介绍了一个统计最高出现频率元素集合的技巧, 要不然就要遍历两次二叉搜索树才能把这个最高出现频率元素的集合求出来。为什么没有这个技巧一定要遍历两次呢?因为要求的是集合,会有多个众数,如果规定只有一个众数,那么就遍历一次稳稳的了。原创 2025-01-03 23:05:03 · 841 阅读 · 0 评论 -
【530. 二叉搜索树的最小绝对差 简单】
二叉搜索树是有序的,所以差值的最小值会出现在相邻两个节点之间。遇到在二叉搜索树上求什么最值啊,差值之类的,就把它想成在一个有序数组上求最值,求差值,这样就简单多了。原创 2025-01-03 17:57:04 · 435 阅读 · 0 评论 -
【98. 验证二叉搜索树 中等】
节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。同时要避免陷阱1:仅比较左节点小于中间节点,右节点大于中间节点就完事了。应该确保左子树所有节点小于中间节点,右子树所有节点大于中间节点。原创 2025-01-02 22:32:55 · 751 阅读 · 0 评论 -
【700. 二叉搜索树中的搜索 简单】
在递归时,可以根据值的大小,有方向的去搜索。在迭代时,可以不使用辅助栈或者队列就可以写出迭代法。原创 2025-01-01 23:09:37 · 730 阅读 · 0 评论 -
【106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 中等】
前序和中序可以唯一确定一棵二叉树。每次递归时,前序遍历数组的第一个元素就是当前的中间节点。后序和中序可以唯一确定一棵二叉树。每次递归时,后续遍历数组的最后一个元素就是当前的中间节点。那么前序和后序可不可以唯一确定一棵二叉树呢?前序和后序不能唯一确定一棵二叉树!因为没有中序遍历无法确定左右部分,也就是无法分割。原创 2024-12-31 11:27:12 · 642 阅读 · 0 评论 -
【112. 路径总和 简单】
注意,如果要递归搜索其中一条符合条件的路径,那么递归一定需要返回值,而且遇到符合条件的路径了就要及时返回。本题使用栈模拟递归的话,那么如果做回溯呢?此时栈里一个元素不仅要记录该节点指针,还要记录从头结点到该节点的路径数值总和。原创 2024-12-29 22:34:07 · 661 阅读 · 0 评论 -
【513. 找树左下角的值 中等】
本题比较迷惑的点就是容易误认为最左边的值就是左叶子节点的值,而写错递归的终止条件。递归法要注意回溯。原创 2024-12-29 16:17:15 · 740 阅读 · 0 评论 -
【257. 二叉树的所有路径 简单】
本文我们开始初步涉及到了回溯,很多同学过了这道题目,可能都不知道自己其实使用了回溯,回溯和递归都是相伴相生的。原创 2024-12-28 12:56:19 · 1137 阅读 · 0 评论 -
【110. 平衡二叉树 简单】
通过本题可以了解求二叉树深度 和 二叉树高度的差异,求深度适合用前序遍历,而求高度适合用后序遍历。当然此题也可以用迭代法,但效率很低,因为没有很好的模拟回溯的过程,所以迭代法有很多重复的计算。但是递归方式是一定要掌握的!原创 2024-12-27 16:17:31 · 916 阅读 · 0 评论 -
【111. 二叉树的最小深度 简单】
要注意计算二叉树的最小深度时的递归法细节,和计算最大深度时的递归法有很大不同。原创 2024-12-26 21:36:20 · 695 阅读 · 0 评论 -
【559. N 叉树的最大深度 简单】
N叉树和普通二叉树的区别是左右节点统一由children表示,其他都一样。原创 2024-12-26 20:40:13 · 343 阅读 · 0 评论 -
【101. 对称二叉树 简单】
介绍了递归法和迭代法,递归依然通过递归三部曲来解决了这道题目,如果只看精简的代码根本看不出来递归三部曲是如何解题的。在迭代法中使用了队列,需要注意的是这不是层序遍历,而且仅仅通过一个容器来成对的存放要比较的元素,知道这一本质之后就发现,用队列,用栈,甚至用数组,都是可以的。原创 2024-12-26 11:23:29 · 1000 阅读 · 0 评论 -
【226. 翻转二叉树 简单】
针对二叉树的问题,解题之前一定要想清楚究竟是前中后序遍历,还是层序遍历。二叉树解题的大忌就是自己稀里糊涂的过了(因为这道题相对简单),但是也不知道自己是怎么遍历的。这也是造成了二叉树的题目“一看就会,一写就废”的原因。原创 2024-12-25 17:05:13 · 358 阅读 · 0 评论 -
【116. 填充每个节点的下一个右侧节点指针 中等】
本题依然是层序遍历,思路同【102. 二叉树的层序遍历 中等】只不过在单层遍历的时候记录一下本层的头部节点,然后在遍历的时候让前一个节点指向本节点就可以了。原创 2024-12-24 22:12:57 · 410 阅读 · 0 评论 -
【199. 二叉树的右视图 中等】
思路同【102. 二叉树的层序遍历 中等】唯一区别是result中只存放每层的最后面的元素。原创 2024-12-22 17:51:35 · 387 阅读 · 0 评论 -
【102. 二叉树的层序遍历 中等】
这份代码也可以作为二叉树层序遍历的模板。原创 2024-12-22 17:24:38 · 560 阅读 · 0 评论 -
【标记法:144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历 简单】
此时写出了统一风格的迭代法,不用在纠结于前序写出来了,中序写不出来的情况了。但是统一风格的迭代法并不好理解,而且想在面试直接写出来还有难度的。所以对于二叉树的前中后序遍历,选择一种自己容易理解的递归和迭代法。原创 2024-12-21 22:36:43 · 422 阅读 · 0 评论 -
【迭代法:144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历 简单】
此时我们用迭代法写出了二叉树的前后中序遍历,大家可以看出前序和中序是完全两种代码风格,并不像递归写法那样代码稍做调整,就可以实现前后中序。这是因为前序遍历中访问节点(遍历节点)和处理节点(将元素放进result数组中)可以同步处理,但是中序就无法做到同步!原创 2024-12-21 21:55:19 · 548 阅读 · 0 评论 -
【递归法:144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历 简单】
前中后序遍历,这里前中后,其实指的就是中间节点的遍历顺序,只要大家记住前中后序指的就是中间节点的位置就可以了。每次写递归,都按照这递归算法的三要素来写,可以保证写出正确的递归算法!确定递归函数的参数和返回值确定终止条件确定单层递归的逻辑。原创 2024-12-19 11:01:19 · 790 阅读 · 0 评论