二叉树
文章平均质量分 59
用吉他敲代码的恶犬
这个作者很懒,什么都没留下…
展开
-
面试题 04.02. 最小高度树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 04.02. 最小高度树题目描述解题过程解题思路总结题目描述给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 来源:力扣(LeetC原创 2021-07-26 21:35:54 · 68 阅读 · 0 评论 -
JZ57 二叉树的下一个结点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档JZ57 二叉树的下一个结点题目描述解题过程解题思路总结题目描述输入描述:输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点返回值描述:返回传入的子树根节点的下一个节点,后台会打印输出这个节点示例1输入:{8,6,10,5,7,9,11},8返回值:9示例2输入:{8,6,10,5,7,9,11原创 2021-07-23 20:27:24 · 65 阅读 · 0 评论 -
114. 二叉树展开为链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档114. 二叉树展开为链表题目描述解题过程解题思路总结题目描述给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,原创 2021-07-18 19:04:50 · 60 阅读 · 0 评论 -
450. 删除二叉搜索树中的节点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档450. 删除二叉搜索树中的节点题目描述解题过程解题思路总结题目描述给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7原创 2021-07-05 20:35:02 · 197 阅读 · 1 评论 -
653. 两数之和 IV - 输入 BST
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档653. 两数之和 IV - 输入 BST题目描述解题过程解题思路总结题目描述给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入:Target = 9输出: True案例 2:输入:Target = 28输出: False来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum-原创 2021-07-03 20:43:55 · 99 阅读 · 0 评论 -
897. 递增顺序搜索树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档897. 递增顺序搜索树题目描述解题过程解题思路总结题目描述给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,n原创 2021-07-03 15:54:09 · 57 阅读 · 0 评论 -
109. 有序链表转换二叉搜索树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档109. 有序链表转换二叉搜索树题目描述解题过程解题思路总结题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:来源:力扣(LeetCod原创 2021-07-03 15:32:17 · 74 阅读 · 0 评论 -
889. 根据前序和后序遍历构造二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档889. 根据前序和后序遍历构造二叉树题目描述解题过程解题思路总结题目描述返回与给定的前序和后序遍历匹配的任何二叉树。pre 和 post 遍历中的值是不同的正整数。示例:输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]输出:[1,2,3,4,5,6,7]提示:1 <= pre.length == post.length <= 30pre[] 和 post[]原创 2021-07-01 22:12:26 · 368 阅读 · 1 评论 -
530. 二叉搜索树的最小绝对差
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档530. 二叉搜索树的最小绝对差题目描述解题过程解题思路总结题目描述给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入:13/2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-absolute-differe原创 2021-07-01 19:33:23 · 58 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档538. 把二叉搜索树转换为累加树题目描述解题过程解题思路总结题目描述给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。注意:本题和 1038原创 2021-06-30 20:13:49 · 91 阅读 · 0 评论 -
513. 找树左下角的值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档513. 找树左下角的值题目描述解题过程解题思路总结题目描述给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入:输出:1示例 2:输入: 1 / \ 2 3 / / \4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fin原创 2021-06-30 19:43:31 · 63 阅读 · 0 评论 -
404. 左叶子之和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档404. 左叶子之和题目描述解题过程解题思路总结题目描述计算给定二叉树的所有左叶子之和。示例:在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-left-leaves著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题过程解题思路递归:用一个外部变量来记录左节点原创 2021-06-30 19:24:39 · 46 阅读 · 0 评论 -
572. 另一个树的子树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档572. 另一个树的子树题目描述解题过程解题思路总结题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s:给定的树 t:返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。示例 2:给定的树 s:给定的树 t:返回 false。来源:力扣(L原创 2021-06-29 21:21:41 · 255 阅读 · 1 评论 -
617. 合并二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档617. 合并二叉树题目描述解题过程解题思路总结题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入:输出:合并后的树:注意: 合并必须从两个树的根节点开始。来源:力扣(LeetCode)链接:https:原创 2021-06-29 19:54:06 · 261 阅读 · 3 评论 -
226. 翻转二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档226. 翻转二叉树题目描述解题过程解题思路总结题目描述翻转一棵二叉树。示例:输入:输出:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题过程解题思路递归:根据规律可以发现,当前节点的左右节点互换即能满足题目要求。因此在递归函数中,用一个临时变量记原创 2021-06-29 19:31:41 · 50 阅读 · 0 评论 -
669. 修剪二叉搜索树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档669. 修剪二叉搜索树题目描述解题过程解题思路总结题目描述给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例 1:输原创 2021-06-26 22:27:38 · 89 阅读 · 0 评论 -
99. 恢复二叉搜索树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档99. 恢复二叉搜索树题目描述解题过程解题思路总结题目描述给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和原创 2021-06-26 21:42:15 · 225 阅读 · 2 评论 -
637. 二叉树的层平均值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档637. 二叉树的层平均值题目描述解题过程解题思路总结题目描述给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有符号整数范围内。来源:力扣(LeetCode)链接:https://leetcode-cn.com/p原创 2021-06-25 20:16:20 · 45 阅读 · 0 评论 -
1110. 删点成林
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档1110. 删点成林题目描述解题过程解题思路总结题目描述给出二叉树的根节点 root,树上每个节点都有一个不同的值。如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。返回森林中的每棵树。你可以按任意顺序组织答案。示例:输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]输出:[[1,2,null,4],[6],[7]]来源原创 2021-06-25 19:32:20 · 75 阅读 · 0 评论 -
101. 对称二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档101. 对称二叉树题目描述解题过程解题思路总结题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-tree著作权归领扣原创 2021-06-24 10:38:44 · 55 阅读 · 0 评论 -
437. 路径总和 III
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档437. 路径总和 III题目描述解题过程解题思路总结题目描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], su原创 2021-06-23 21:12:17 · 59 阅读 · 1 评论 -
543. 二叉树的直径
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档543. 二叉树的直径题目描述解题过程解题思路总结题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目原创 2021-06-22 21:30:53 · 48 阅读 · 0 评论 -
110. 平衡二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档110. 平衡二叉树题目描述解题过程解题思路总结题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root =原创 2021-06-22 20:08:13 · 70 阅读 · 1 评论 -
17. 电话号码的字母组合
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档17. 电话号码的字母组合题目描述解题过程解题思路总结题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例原创 2021-04-19 20:02:59 · 163 阅读 · 0 评论 -
二叉树的序列化与反序列化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档二叉树的序列化与反序列化题目描述解题过程解题思路总结)题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 输入输原创 2021-02-04 23:37:45 · 93 阅读 · 0 评论 -
填充每个节点的下一个右侧节点指针
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档填充每个节点的下一个右侧节点指针题目描述解题过程解题思路总结题目描述给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 ne原创 2021-02-01 22:23:30 · 76 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档从前序与中序遍历序列构造二叉树题目描述解题过程解题思路题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:注意:题目来自leetcode解题过程解题思路利用递归方法,递归调用自己,适当时机判断返回条件。根据前序遍历的思想,前序遍历数原创 2021-02-01 20:24:07 · 76 阅读 · 0 评论 -
从中序与后序遍历序列构造二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档从中序与后序遍历序列构造二叉树题目描述解题过程解题思路题目描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:注意:题目来自leetcode解题过程解题思路利用递归方法,递归调用自己,适当时机判断返回条件。根据后序遍历的思想,后序遍原创 2021-01-31 22:54:58 · 316 阅读 · 0 评论 -
路径总和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档路径总和题目描述解题过程解题思路总结题目描述给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:原创 2021-01-29 23:21:52 · 107 阅读 · 0 评论 -
对称二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档对称二叉树题目描述解题过程解题思路总结题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:注意:题目来自leetcode解题过程解题思路利用递归方法,递归调用自己,并且递归函数递归判断对称情况。1、创建一个boolean返回值类型的recur递归函数,传入的是左L、右R两个节点;2原创 2021-01-28 22:34:45 · 339 阅读 · 0 评论 -
二叉树的最大深度
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档二叉树的最大深度题目描述解题过程解题思路总结题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]返回它的最大深度 3 。注意:题目来自leetcode解题过程解题思路利用递归方法,递归调用自己,并且递归函数维护一个传入的深度值。1、定义一个变量answer保存最大原创 2021-01-28 22:01:15 · 161 阅读 · 2 评论 -
二叉树的前序遍历
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档二叉树的前序遍历题目描述一、递归法解题思路二、迭代法解题思路总结题目描述二叉树的前序遍历一、递归法解题思路根据根节点、左子树、右子树的顺序递归调用自己。递归终止条件是节点为空代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN原创 2021-01-22 23:14:42 · 107 阅读 · 0 评论 -
二叉树的中序遍历
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档二叉树的中序遍历题目描述一、递归法解题思路二、迭代法解题思路总结题目描述二叉树的中序遍历一、递归法解题思路根据左子树、根节点、右子树的顺序递归调用自己。递归终止条件是节点为空代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN原创 2021-01-24 21:59:58 · 145 阅读 · 0 评论 -
二叉树的后序遍历
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档二叉树的后序遍历题目描述一、递归法解题思路二、迭代法解题思路总结题目描述二叉树的后序遍历一、递归法解题思路根据左子树、右子树、根节点的顺序递归调用自己。递归终止条件是节点为空代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN原创 2021-01-25 19:57:29 · 307 阅读 · 0 评论 -
二叉树的层序遍历
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档二叉树的层序遍历题目描述解题过程解题思路总结题目描述二叉树的层序遍历解题过程解题思路利用队列的先进先出原则,将每层的节点依次入队。再用一个循环遍历队列中的每一个节点,取其值放进List列表。1、创建保存最终结果的res列表;2、创建FIFO的队列,并将根节点入队;3、while循环,循环结束的条件是队列为空;4、while循环中,创建list列表用于保存一层遍历的结果;5、while循环中,计算当前队列中的元素个原创 2021-01-28 21:47:23 · 81 阅读 · 0 评论