
二叉树
文章平均质量分 79
二叉树相关
MD_
不拼一下 你怎么知道你不会成功!
展开
-
Leetcode 111. 二叉树的最小深度
文章目录问题描述解题报告实现代码参考资料问题描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最小深度 2.解题报告注意:最小深度是根节点到 最近叶子节点 的最短路径上的节点数量。实现代码/** * Definition for a binary tree node. * struc原创 2020-08-21 10:49:35 · 217 阅读 · 0 评论 -
牛客-JZ 57二叉树的下一个节点【二叉树的中序遍历】
文章目录问题描述解题报告实现代码参考资料问题描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题报告首先判断该节点 t 是否有右子树:如果没有的话,我们需要返回到该节点的父节点 p ,检查节点 p 的右孩子是否为节点 t,如果是,回溯法节点 p,继续同样的操作,如果不是,返回当前节点的父节点。如果有的话,那么该节点的右子树的最左边的节点即为节点 t 的下一个节点。实现代码/*struct Tree原创 2020-07-29 09:16:26 · 132 阅读 · 0 评论 -
Leetcode 剑指 Offer 54. 二叉搜索树的第k大节点【二叉树的中序遍历】
文章目录问题描述解题报告实现代码参考资料问题描述解题报告由于二叉搜索的中序遍历可以得到一个有序序列,所以本题用中序遍历来实现。中序遍历有 递归 和 非递归 两种实现方式。如果采用 递归 的方式,则需要将树中所有节点遍历完了之后,取出有序序列的第 k 大元素;如果采用 非递归 的方式,则只需遍历到第 k 个节点,即可跳出程序。另外需要注意的一点是:中序遍历时【左-中-右】得到的是从小到大的有序序列;【右-中-左】得到的是从大到小的有序序列,而本题宜采用【右-中-左】的遍历方式。实现代码/*原创 2020-07-27 10:46:30 · 229 阅读 · 0 评论 -
Leetcode 1038. 从二叉搜索树到更大和树【逆向中序遍历】
文章目录问题描述解题报告实现代码参考资料问题描述给出二叉 搜索 树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。示例:输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]输出:[30,36,21,36,35,2原创 2020-07-25 21:49:26 · 543 阅读 · 0 评论 -
Leetcode 124. 二叉树的最大路径和【递归】
文章目录问题描述解题报告实现代码参考资料问题描述给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。解题报告以某一子树的根节点为研究对象,如果最大路径经过该子树,则必定 经过该子树的根节点以及该子树 左右子树 中的某一子树。实现时:设置全局变量 val,它记录了整棵树的最大路径和。递归搜索每棵子树的根节点,其返回经过该子树根节点的的最大路径和【该路径只经过该子树的某一子树】。在递归的过程中,更原创 2020-06-27 17:39:01 · 500 阅读 · 1 评论 -
不同的二叉搜索树系列 【递归】
文章目录Leetcode 96. 不同的二叉搜索树问题描述解题报告实现代码Leetcode 95. 不同的二叉搜索树 II问题描述解题报告实现代码总结参考资料Leetcode 96. 不同的二叉搜索树问题描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?解题报告完全模仿 Leetcode 95 来实现的。实现代码class Solution {public: int helper(int start,int end){ int ret=0;原创 2020-06-26 14:27:11 · 325 阅读 · 0 评论 -
Leetcode 1028. 从先序遍历还原二叉树【二叉树遍历系列】
文章目录问题描述解题报告实现代码参考资料问题描述我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。输入:“1-2–3--4-5–6--7”输出:[1,2,5,3,4,6,7]解题报告模拟先序遍历进行反序列化原创 2020-06-18 23:37:33 · 346 阅读 · 0 评论 -
【二叉树后续遍历-应用系列】
文章目录介绍Leetcode 面试题34. 二叉树中和为某一值的路径问题描述实现代码Leetcode 257. 二叉树的所有路径问题描述解题报告实现代码Leetcode 129. 求根到叶子节点数字之和问题描述解题报告实现代码参考资料介绍二叉树的遍历可参考 二叉树的非递归遍历【前序|中序|后序】-解释非常清晰下面介绍几道关于二叉树遍历的题目。Leetcode 面试题34. 二叉树中和为某一值的路径问题描述输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下原创 2020-05-11 16:44:23 · 424 阅读 · 0 评论 -
二叉树的非递归遍历【前序|中序|后序】-解释非常清晰
文章目录二叉树的遍历介绍Leetcode 144. 二叉树的前序遍历Leetcode 94.二叉树的中序遍历Leetcode 145.二叉树的后序遍历Leetcode 面试题68 - II. 二叉树的最近公共祖先问题描述解题报告实现代码总结参考资料二叉树的遍历介绍在使用栈来遍历二叉树时,实际上每个节点访问了三次,前序、中序、后序遍历分别对应着第一次访问就输出、第二次访问才输出、第三次访问才输出。【根左右、左根右、左右根】三次访问过程是:在遍历时,每遇到一个节点 p【第一次访问】,我们就将节点 p 入原创 2020-05-10 22:32:16 · 793 阅读 · 0 评论 -
二叉树系列-Leetcode 783. 二叉搜索树节点最小距离
文章目录问题描述解题报告实现代码参考资料问题描述给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。解题报告像中序遍历二叉搜索树,得到递增的序列这种方法暂且不考虑,只考虑递归。整棵树中任意两节点的差的最小值有三种取值可能:根节点与其他节点的差值的最小值,即根节点与左子树中最大值的差值和右子树中的最小值与根节点的差值中的较小者;根节点的左子树中任意两节点的差的最小值;根节点的右子树中任意两节点的差的最小值;实现代码/** * Definition for a bi原创 2020-05-08 23:01:48 · 171 阅读 · 0 评论 -
二叉树系列-Leetcode 572. 另一个树的子树
文章目录问题描述解题报告实现代码参考资料问题描述给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。解题报告实现代码参考资料原创 2020-05-08 22:25:58 · 111 阅读 · 0 评论 -
二叉树系列-Leetcode 面试题 04.04. 检查平衡性
文章目录问题描述解题报告实现代码参考资料问题描述实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。解题报告这种二叉树问题,首先考虑递归。树是天然的递归结构,左节点是树,右节点也是树。所以满足以root为根的树是具有平衡性的话:左子树需要满足平衡性;右子树亦需满足平衡性;同时左子树与右子树的高度差在1以内。实现代码/** * Definition for a binary tree node. * struct Tree原创 2020-05-08 22:14:14 · 306 阅读 · 0 评论 -
Leetcode 987.二叉树的垂序遍历
文章目录问题描述解题报告实现代码参考资料问题描述给定二叉树,按垂序遍历返回其结点值。对位于 (X, Y) 的每个结点而言,其左右子结点分别位于 (X-1, Y-1) 和 (X+1, Y-1)。把一条垂线从 X = -infinity 移动到 X = +infinity ,每当该垂线与结点接触时,我们按从上到下的顺序报告结点的值( Y 坐标递减)。如果两个结点位置相同,则首先报告的结点值较...原创 2020-04-26 00:15:34 · 221 阅读 · 0 评论 -
Leetcode 面试题68 - II. 二叉树的最近公共祖先【递归&非递归】
文章目录问题描述解题报告递归非递归实现代码递归非递归参考资料问题描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,...原创 2020-04-17 22:19:11 · 1388 阅读 · 0 评论 -
Leetcode 面试题26. 树的子结构&Leetcode 617. 合并二叉树&Leetcode 面试题28. 对称的二叉树
文章目录问题描述解题报告实现代码参考资料问题描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一棵树的子结构)B是A的子结构,即A中有出现B相同的结构和节点值。解题报告B是A的子结构,存在三种情况:B的根节点和A的根节点相同,但是在分叉后,B首先停止;这种情况对应于helper()函数。B是A的左子树的子结构;这种情况对应于isSubStructure()函数。...原创 2020-04-06 17:09:41 · 367 阅读 · 0 评论 -
Leetcode 549. 二叉树中最长的连续序列
文章目录问题描述解题报告实现代码问题描述给定一个二叉树,你需要找出二叉树中最长的连续序列路径的长度。请注意,该路径可以是递增的或者递减的。另一方面,路径可以是子-父-子顺序,并不一定是父-子顺序。解题报告从根节点开始,依次对左右孩子节点进行遍历。返回从每个节点开始的最长的增长序列inc以及最长的下降序列dec。如果左孩子的值比当前值小,则当前节点与左孩子形成下降序列,所以dec更新...转载 2020-03-28 21:18:30 · 1050 阅读 · 0 评论