树
树
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode99. 恢复二叉搜索树
题目 给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗? 示例 1: 输入:root = [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。 示例 2: 输入:root = [3,1,4,null,null,2] 输出:[2,1,4,nu原创 2021-01-10 23:28:04 · 322 阅读 · 1 评论 -
leetcode236. 二叉树的最近公共祖先
题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解释: 节点 5 和节原创 2021-01-10 23:09:28 · 189 阅读 · 0 评论 -
leetcode124. 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入:[1,2,3] 1 / \ 2 3 输出:6 示例2: 输入:[-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 输出:42 思路 dfs的过程中会经历每个父节点,并计算出经过该父节点的最原创 2021-01-10 17:36:22 · 191 阅读 · 0 评论 -
leetcode112. 路径总和
题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2019-08-29 21:20:18 · 161 阅读 · 0 评论 -
leetcode113. 路径总和 II
题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2019-08-29 21:18:44 · 126 阅读 · 0 评论 -
leetcode129. 求根到叶子节点数字之和
题目 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入: [1,2,3] 1 / 2 3 输出: 25 解释: 从根到叶子节点路径 1->2 代表数字 12. 从根到叶...原创 2019-07-18 23:47:28 · 153 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / 1 3 输出: true 示例 2: 输入: 5 / 1 4 / 3 6 输出: false 解释: 输入为: [5,1,4,null,nu...原创 2019-07-12 00:30:53 · 176 阅读 · 0 评论 -
leetcode112. 路径总和
题目 路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2019-08-20 14:51:26 · 136 阅读 · 0 评论 -
leetcode145. 二叉树的后序遍历
题目 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路 参考 【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法 实现 /** * Definition for a binary tree node. * stru...原创 2019-08-29 21:07:12 · 229 阅读 · 0 评论 -
leetcode144. 二叉树的前序遍历
题目 给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路 参考【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法 实现 /** * Definition for a binary tree node. * s...原创 2019-08-29 21:09:25 · 123 阅读 · 0 评论 -
leetcode105. 从前序与中序遍历序列构造二叉树
题目 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 实现 /** * Definition for a binary tree...原创 2019-08-29 21:22:30 · 268 阅读 · 0 评论 -
leetcode 106. 从中序与后序遍历序列构造二叉树
题目 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 实现 /** * Definition for a binary tre...原创 2019-08-29 21:24:07 · 427 阅读 · 0 评论 -
leetcode129. 求根到叶子节点数字之和
题目 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 25 解释: 从根到叶子节点路径 1->2 代...原创 2019-08-29 21:27:05 · 150 阅读 · 0 评论 -
leetcode103. 二叉树的锯齿形层次遍历
题目 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ] 思路 双栈,一个栈先插左子树再插右...原创 2019-09-02 17:11:17 · 170 阅读 · 0 评论 -
leetcode108 将有序数组转换为二叉搜索树
题目 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 思路 1.找到了根节点,...原创 2019-08-12 23:58:56 · 193 阅读 · 0 评论 -
leetcode110. 平衡二叉树
题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] ...原创 2019-08-20 10:47:44 · 129 阅读 · 0 评论 -
leetcode107. 二叉树的层次遍历 II
题目 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 思路 1.分层遍历,控制两个计数器 2.从底层向上层输出 vec.insert(vec.b...原创 2019-08-16 15:25:32 · 123 阅读 · 0 评论 -
leetcode109. 有序链表转换二叉搜索树
有序链表转换二叉搜索树 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 ...原创 2019-08-16 16:36:10 · 183 阅读 · 0 评论 -
树的小结和二叉树的递归遍历
public class BinaryTree { private BinaryNode root; public void printPreOrder(){ if(root != null){ root.printPreOrder(); } } public void printInOrder(){原创 2016-08-20 17:22:58 · 651 阅读 · 0 评论 -
leetcode94. 二叉树的中序遍历
题目 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路 参考【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法 实现 /** * Definition for a binary tree node. * struct...原创 2019-08-29 21:13:29 · 200 阅读 · 0 评论 -
leetcode114. 二叉树展开为链表
题目 给定一个二叉树,原地将它展开为链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 1 \ 2 \ 3 \ 4 \ 5 \ 6 实现 /** * Definition for a binary tree node. * st...原创 2019-08-29 21:15:38 · 243 阅读 · 0 评论 -
剑指 Offer 54. 二叉搜索树的第k大节点
题目 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4 思路 思路1.中序遍历后为升序数组,取第k大的元素 思路2. 反中序遍历+计数器 时间复杂度:原创 2020-10-27 20:59:04 · 139 阅读 · 0 评论 -
特定深度节点链表
题目 给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。 示例: 输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7 / 8 输出:[[1],[2,3],[4,5,7],[8]] 思路 1.类似于二叉树的层次遍历,借助队列和两个计数器 2.区别点是这里需要根据每层原创 2020-10-27 20:13:33 · 261 阅读 · 0 评论 -
leetcode102. 二叉树的层次遍历
题目 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 思路 1.遍历每层节点时用队列存储每个节点的左右子节点 2.用计数器统计当前层次的节点数量和下层节点的数量 3.当层节点遍历...原创 2019-07-18 23:15:30 · 183 阅读 · 0 评论
分享