二叉树
月亮好像心动了❤️
这个作者很懒,什么都没留下…
展开
-
相同的树
描述: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 示例...原创 2019-08-09 12:33:36 · 74 阅读 · 0 评论 -
验证二叉搜索树
题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / 1 3 输出: true 示例 2: 输入: 5 / 1 4 / 3 6 输出: false 解释: 输入为: [5,1,4,null,nu...原创 2019-08-09 00:47:05 · 69 阅读 · 0 评论 -
二叉树的直径
描述: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是...原创 2019-08-21 12:32:25 · 189 阅读 · 0 评论 -
路径总和 III
描述: 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 ...原创 2019-08-22 15:37:22 · 117 阅读 · 1 评论 -
树的子结构
题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if (root1 == null || root2 == null) return false; ...原创 2019-09-11 23:09:26 · 60 阅读 · 0 评论 -
二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 pub...原创 2019-09-11 23:14:54 · 58 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if (sequence == null || sequence.len...原创 2019-09-12 00:11:03 · 92 阅读 · 0 评论 -
二叉树的下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 需要分三种情况来进行判断 /* public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeL...原创 2019-09-12 12:38:02 · 63 阅读 · 0 评论 -
序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。 二叉树的反序列化是指:根据某种遍历顺序得到...原创 2019-09-12 13:07:56 · 61 阅读 · 0 评论 -
二叉树的最小深度
描述: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 思路分析: 1、需要注意的是,如果某一节点的某一个子树为空,那么就不应该再以它的...原创 2019-08-11 14:37:02 · 69 阅读 · 0 评论 -
有序链表转换二叉搜索树
描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2019-08-11 13:34:40 · 133 阅读 · 0 评论 -
对称二叉树
描述: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 思路: 1、主问题:判断root节点下的两个子树是...原创 2019-08-09 12:37:51 · 63 阅读 · 0 评论 -
翻转一棵二叉树
题目: 示例: 输入: 4 / 2 7 / \ / 1 3 6 9 输出: 4 / 7 2 / \ / 9 6 3 1 思路: 1、首先尝试将问题分解出子问题、看是否需要新建helper函数 2、原问题:求指定根节点的翻转二叉树 3、子问题:求指定根节点的左子树的翻转二叉树和右节点的翻转二叉树 4、都是求一个节点往下的翻转二叉树,所以...原创 2019-08-09 12:17:15 · 423 阅读 · 0 评论 -
求根到叶子节点数字之和
描述: 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 25 解释: 从根到叶子节点路径 1->2 代表...原创 2019-08-09 18:55:08 · 144 阅读 · 0 评论 -
打家劫舍 III
描述: 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。 计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。 示例 1: 输入: [3,2...原创 2019-08-10 01:07:48 · 149 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树
描述: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路分析: 1、对于二叉树的题目,重点需要分析出子问题、以此来确定是否需要...原创 2019-08-10 18:20:13 · 195 阅读 · 0 评论 -
二叉树的右视图
描述: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- 思路分析: 强行使用DF...原创 2019-08-14 21:46:24 · 179 阅读 · 0 评论 -
二叉搜索树中第K小的元素
描述: 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 1 示例 2: 输入: root = [5,3,6,2,4,null,null,1]...原创 2019-08-14 22:33:22 · 74 阅读 · 0 评论 -
从中序与后序遍历序列构造二叉树
描述: 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 代码实现: /** * Definition for a binary...原创 2019-08-11 12:08:33 · 147 阅读 · 0 评论 -
平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if (root == null) return true; int ans = getDepth(root); return ans...原创 2019-09-12 13:21:53 · 56 阅读 · 0 评论