
树
Mr_Curious_
自律、自律、自律、自律。要时刻保持奋发向上的精神面貌!!!
展开
-
104 二叉树的最大深度(****)
https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; int leftre...原创 2018-06-04 21:34:31 · 217 阅读 · 0 评论 -
111. 二叉树的最小深度(***)
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.注意:它是到最近的叶子节点,要多考虑根节点class Solution ...原创 2018-06-07 12:48:23 · 479 阅读 · 0 评论 -
404. 左叶子之和(某递归形式)
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24class Solution { int sum = 0; public int preSum(TreeNode root,TreeNode last) { if(roo...原创 2018-06-07 13:00:28 · 333 阅读 · 0 评论 -
669. 修剪二叉搜索树
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2示例 2:输入: ...原创 2018-06-22 10:19:00 · 228 阅读 · 0 评论 -
230. 二叉搜索树中第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],...原创 2018-06-22 10:44:51 · 6269 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / ...原创 2018-06-22 10:51:28 · 1100 阅读 · 2 评论 -
687. 最长同值路径(和543相似,返回值不同,因为意义不同)
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:输入:...原创 2018-06-14 14:55:40 · 844 阅读 · 1 评论 -
109. 有序链表转换二叉搜索树(平衡的) 关于递归的时间复杂度是一个问题
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2018-06-22 14:17:21 · 667 阅读 · 0 评论 -
530. 二叉搜索树的最小绝对差
给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值。示例 :输入: 1 \ 3 / 2输出:1解释:最小绝对差为1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。注意: 树中至少有2个节点。class Solution { List<Integer> list = new ...原创 2018-06-22 14:40:24 · 432 阅读 · 0 评论 -
404. 左叶子之和()
给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2示例 2:输入: ...原创 2018-06-07 20:36:19 · 321 阅读 · 0 评论 -
501. 二叉搜索树中的众数(各种常用的偏冷:HashMap的遍历,list和数组的转换)
这里写代码片给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数...原创 2018-06-22 15:15:40 · 1051 阅读 · 3 评论 -
337. 打家劫舍 III(间隔遍历)
小偷又发现一个新的可行窃的地点。 这个地区只有一个入口,称为“根”。 除了根部之外,每栋房子有且只有一个父房子。 一番侦察之后,聪明的小偷意识到“这个地方的所有房屋形成了一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。在不触动警报的情况下,计算小偷一晚能盗取的最高金额。示例 1: 3 / \ 2 3 \ \ 3...原创 2018-06-15 09:11:08 · 1345 阅读 · 1 评论 -
208. 实现 Trie (前缀树) 还没ok
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app...原创 2018-06-24 16:07:33 · 298 阅读 · 0 评论 -
637. 二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。class Solution ...原创 2018-06-19 08:59:05 · 952 阅读 · 0 评论 -
513. 找树左下角的值(层次遍历的基本错误)
给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。clas...原创 2018-06-19 09:27:01 · 297 阅读 · 0 评论 -
50 / 236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] _______3______ ...原创 2018-06-14 09:32:49 · 2019 阅读 · 0 评论 -
50/235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] _______6____...原创 2018-06-14 08:55:27 · 1469 阅读 · 0 评论 -
226. 翻转二叉树
https://leetcode-cn.com/problems/invert-binary-tree/description/class Solution { public TreeNode invertTree(TreeNode root) { if(root != null){ TreeNode tmp = root.right; ...原创 2018-06-04 21:39:30 · 114 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树(高度平衡的)(low > high)的结束条件
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10...原创 2018-06-11 19:49:41 · 180 阅读 · 0 评论 -
543. 二叉树的直径(两节点的最长路径)
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们...原创 2018-06-11 20:41:31 · 3313 阅读 · 0 评论 -
671. 二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入: 2 / \ 2 5 / \ 5 7输出: 5说明: 最小的值是 ...原创 2018-06-11 21:24:38 · 927 阅读 · 0 评论 -
617 合并二叉树(带有返回值)
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 ...原创 2018-06-05 08:40:16 · 380 阅读 · 0 评论 -
144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历
给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?class Solution { public List<Integer> preorderTraversal(TreeNode root) { ...原创 2018-06-21 09:27:46 · 243 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 4 7Target = 28输...原创 2018-06-21 09:52:09 · 424 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 4 7Target = 28输...原创 2018-06-21 09:52:13 · 445 阅读 · 0 评论 -
112. 路径总和(树递归中的一点小收获_什么是子节点)
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5. / \ 4. 8 / / \ 11. 13 ...原创 2018-06-06 17:47:57 · 581 阅读 · 0 评论 -
437. 路径总和 III(未解决)
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...原创 2018-06-06 20:58:42 · 184 阅读 · 0 评论 -
18 树的子结构(树递归 和437有点像)
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)通过一种遍历方式获得该树的字符串,再判断一个字符串是不是另一个字符串的子串!代码如下:public class Solution { public String preOrder(String str,TreeNode root){ if(root != null){ ...原创 2018-04-29 17:33:55 · 157 阅读 · 0 评论 -
572. 另一个树的子树(和树的子结构异曲同工)
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和...原创 2018-06-06 21:43:00 · 256 阅读 · 0 评论 -
59 对称的二叉树 《剑指offer》 101. 对称二叉树《LeetCode》
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2018-05-31 09:21:25 · 166 阅读 · 0 评论 -
110. 平衡二叉树 (思想很重要--两层递归) 二叉搜索树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,...原创 2018-06-07 10:54:20 · 1052 阅读 · 0 评论 -
根节点到某节点的路径或者到所有子节点的路径
肯定前序遍历 /**查找根节点到某一节点的路径*/ void findPath(TreeNode root, TreeNode target, ArrayList<TreeNode> list){ if(root == null) return; list.add(root); if(root...原创 2018-08-06 19:43:45 · 2732 阅读 · 0 评论