
二叉树问题
二叉树问题
Golang服务端工程师
服务端工程师
展开
-
【LeetCode算法修炼+动画演示】【二叉树的遍历】——X.遍历二叉树的方法合集、Morris遍历、94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
X.遍历二叉树的方法合集前中后序遍历的递归实现代码片段public static void preOrderRecur(TreeNode head) { if (head == null) { return; } System.out.print(head.value + " "); preOrderRecur(head.left); ...原创 2020-02-05 02:52:36 · 5236 阅读 · 2 评论 -
【3分钟秒懂算法题解】 LeetCode 110. 平衡二叉树
110. 平衡二叉树原题链接给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,...原创 2020-03-02 17:14:17 · 4268 阅读 · 0 评论 -
【最详细的算法视频题解】—— Leetcode 450. 删除二叉搜索树中的节点
450. 删除二叉搜索树中的节点原题链接要点理解二叉搜索树中序遍历是有序数组理解怎么遍历二叉搜索树欲查找的值如果与某个结点比较时,继续在这个节点的右边查找,反之左边,相等返回结果。删除时保证而二叉搜索树的性质不变。解法找到欲删除的节点位置。找到一个值能够替换它(之后将它删除,否则将有两个相同元素),保持中序遍历数组的有序性。代码片段class Solu...原创 2020-02-17 09:04:45 · 992 阅读 · 1 评论 -
【最详细的算法视频题解】—— Leetcode 515. 在每个树行中找最大值
515. 在每个树行中找最大值原题链接要点关键词: 每一行也就是说当遇到某一行的时候,只要更新这一行的最大值即可。代码片段class Solution { List<Integer> list = new ArrayList<>();//1.初始化结果数组 public static void main(String[] args) { TreeNod...原创 2020-02-16 22:10:18 · 279 阅读 · 0 评论 -
【最详细的算法视频题解】—— Leetcode 662. 二叉树最大宽度
662. 二叉树最大宽度原题链接要点关键点在于这一层的长度是由这一层的最左侧节点与最右侧节点来计算。与树中的值没有关系,请屏蔽里面的内容来解题。满二叉树,黑色结点当做null节点看解法假设取第二层,即 d=2d = 2d=2 的某个结点。满二叉树中,某个结点的左孩子节点位置在 2∗d2 * d2∗d,右孩子节点位置在 2∗d+12*d+12∗d+1想办法记录当前层其中一侧(最...原创 2020-02-16 21:52:10 · 734 阅读 · 0 评论 -
【最详细的算法视频题解】 LeetCode623. 在二叉树中增加一行
623. 在二叉树中增加一行原题链接要点这里需要注意:添加规则里面说明在d层增加节点是在d-1的每个节点上增加左右两个节点。比如在d=3的时候,要根据d=2添加节点一共添加4个节点。解法d=3d=3d=3在d=2的时候,将v元素节点作为该结点的左右孩子节点,之后将原d=3的节点与v节点连接。需要注意当d=1的时候,也就是没有上一层节点无法添加节点。题目要求:如果 d...原创 2020-02-16 21:07:14 · 256 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的遍历】—— 1104. 二叉树寻路
1104. 二叉树寻路原题链接在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节...原创 2020-02-15 01:08:43 · 416 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的子树】—— x.判断t1树中是否有与t2树拓扑结构完全相同的子树、572. 另一个树的子树
x.判断t1树中是否有与t2树拓扑结构完全相同的子树题目来源:《程序员代码面试指南:IT 名企算法与数据结构题目最优解》给定彼此独立的两棵树头节点分别为t1和t2,判断t1中是否有与t2树拓扑结构完全相同的子树。例如t1: 1 / \ 2 3 / \ / \ 4 5 6 7 \ /...原创 2020-02-10 23:16:04 · 336 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的子树】—— x.判断t1树是否包含t2树全部的拓扑结构
105.从前序与中序遍历序列构造二叉树题目来源:《程序员代码面试指南:IT 名企算法与数据结构题目最优解》给定彼此独立的两颗树头结点分别为 t1 和 t2 ,判断 t1 树是否包含 t2 树全部的拓扑结构。例如t1: 1 / \ 2 3 / \ / \ 4 5 6 7 / \ / 8...原创 2020-02-10 22:37:39 · 382 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的子树】—— x.找到二叉树中符合搜索二叉树条件最大拓扑结构
x.找到二叉树中符合搜索二叉树条件最大拓扑结构原题链接要点解法以每一个节点为最大拓扑结构的根结点,找到这棵构成的搜索二叉树的节点个数。代码片段public int bstTopoSize(TreeNode head) { if (head == null) {//0.终止条件 return 0; } int max = maxTopo(head, head);//1.找到...原创 2020-02-10 09:38:20 · 301 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的序列化】—— 654. 最大二叉树
654. 最大二叉树原题链接给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。示例 :输入:[3,2,1,6,0,5]输出:返回下面这棵树的根节点: 6 ...原创 2020-02-10 00:08:50 · 186 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的序列化】—— 998. 最大二叉树 II
105.从前序与中序遍历序列构造二叉树原题链接这里我给出比较精简的题目说明最大树定义:一个树,其中每个节点的值都大于其子树中的任何其他值。给出最大树的根节点 root。A是中序遍历的结果,B是加入 val 之后中序遍历的结果之后给你一个新的元素 val,要求你将这个元素加在 中序遍历 这个结果的尾部。求出构成的树。 输入:root = [4,1,3,null,null,2], ...原创 2020-02-09 23:17:29 · 173 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的子树】—— 找到二叉树中的最大搜索二叉子树
找到二叉树中的最大搜索二叉子树题目来源:《程序员代码面试指南:IT 名企算法与数据结构题目最优解》要点二叉搜索树是指每一个节点构成的二叉树都符合根节点大于左边节点,小于右边结点。如果一棵子树是二叉搜索树。假设这棵子树为上层节点的左子树,则该子树的最大值(最右侧)必须小于此节点,反之小于此节点。解法如果我们知道了某个子树的最大值与最小值,那么不管这个子树在 以上层节点为根节点 的...原创 2020-02-08 20:27:08 · 538 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 687. 最长同值路径
105.从前序与中序遍历序列构造二叉树原题链接给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 ...原创 2020-02-08 15:37:51 · 225 阅读 · 2 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 543. 二叉树的直径
543. 二叉树的直径原题链接给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意...原创 2020-02-08 15:10:45 · 293 阅读 · 3 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 129. 求根到叶子节点数字之和
1129. 求根到叶子节点数字之和原题链接给定一个二叉树,它的每个结点都存放一个 0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到...原创 2020-02-08 14:51:25 · 227 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 437. 路径总和 III
105.从前序与中序遍历序列构造二叉树原题链接给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-...原创 2020-02-08 14:31:09 · 150 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 113. 路径总和 II
105.从前序与中序遍历序列构造二叉树原题链接给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 ...原创 2020-02-08 13:56:25 · 181 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 112. 路径总和
112. 路径总和原题链接给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 ...原创 2020-02-08 13:42:48 · 216 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 124.二叉树中的最大路径和
124.二叉树中的最大路径和原题链接给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 /...原创 2020-02-08 13:18:07 · 206 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】—— 在二叉树中找到累加和为指定值的最长路径长度
路径和相关题目在二叉树中找到累加和为指定值的最长路径长度要点路径是从某个结点往下,从一共存在N条从根节点到叶子节点的路径。我们只需要在这N条路径上分别求出符合 sum 的最长路径长度。这里是求 未排序数组中累加和为给定值的最长子数组系列问题的题目以及相关解题方法。解法假设你已经掌握求解 未排序数组中累加和为给定值的最长子数组 的方法,那么我们的代码就是将其扩展成N条。可以通过先序遍...原创 2020-02-08 12:58:57 · 503 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【修改节点】——226. 翻转二叉树
226. 翻转二叉树原题链接翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebr...原创 2020-01-30 16:50:27 · 187 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的遍历】——235. 二叉搜索树的最近公共祖先
235. 二叉搜索树的最近公共祖先原题链接给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]...原创 2020-01-28 18:23:34 · 203 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的路径和】——404. 左叶子之和
105.从前序与中序遍历序列构造二叉树原题链接计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24要点与【LeetCode算法修炼指南】——112.路径总和、113.路径总和II 是类型相同的题目不同的点在于这里的终止条件需要判断叶子节点实在左边。...原创 2020-01-28 17:28:38 · 1609 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的遍历】——98.验证二叉搜索树
98.验证二叉搜索树原题链接给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \...原创 2020-01-28 00:02:40 · 228 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的序列化】—— 105.从前序与中序遍历序列构造二叉树、106.从中序与后序遍历序列构造二叉树
105.从前序与中序遍历序列构造二叉树原题链接根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \9 20 / \ 15 7要点前序遍历的过程中,每次最先遇到的都可以将其视...原创 2020-01-26 22:02:02 · 172 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的序列化】—— 96.不同的二叉搜索树、95.不同的二叉搜索树II
题目原题链接给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2...原创 2020-01-26 21:12:03 · 3908 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的子树】——101.对称二叉树、100.相同的树、572. 另一个树的子树
Leetcode-100.相同的树题目LeetCode原题链接给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输...原创 2020-01-26 17:10:31 · 213 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的遍历】——102.二叉树的层次遍历、107.二叉树的层次遍历II、103.二叉树的锯齿形层次遍历
题目LeetCode原题链接给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]要点由输出结果可以看出是层次遍...原创 2020-01-26 14:04:04 · 256 阅读 · 0 评论 -
【LeetCode算法修炼+动画演示】【二叉树的序列化】——108.将有序数组转换为二叉搜索树
目录题目要点递归解法代码片段题目LeetCode原题链接将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 ...原创 2020-01-26 13:35:43 · 197 阅读 · 0 评论