![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树算发题
文章平均质量分 54
一碗机智的糖浆
这个作者很懒,什么都没留下…
展开
-
106. 从中序与后序遍历序列构造二叉树(java实现)--LeetCode
解法1:递归/** * 思路: * 1 * 2 3 * 4 5 6 7 * * 中序:425 1 637 * 后序:452 673 1 * * 根据中序遍历我们可以知道根节点的位置,以及根节点的左子树和右子树各有多少个节点:425 1 637 * 在知道左子树和右子树个数的情况下,我们就能在后序遍历中找到左子树和右子树的起点和终点 * 之后递归的设置左右子树 */ public TreeNode buildTree(int[] inorder, i原创 2021-01-25 14:20:39 · 126 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树(java实现)--LeetCode
文章目录题目:解法1:递归解法2:递归(光头哥说的On^2的情况)解法3:递归(光头哥说的用map降到On的情况)题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解法1:递归光头哥原文:https://leetcode.com/p原创 2021-01-25 14:02:36 · 294 阅读 · 3 评论 -
236. 二叉树的最近公共祖先(java实现)--LeetCode
文章目录题目:解法1:递归解法2:迭代题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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原创 2021-01-25 13:13:39 · 362 阅读 · 0 评论 -
297. 二叉树的序列化与反序列化(java实现)--LeetCode
文章目录题目:解法1:递归解法2:队列解法3:递归(超出内存限制)题目:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 / \ 2 3原创 2021-01-21 20:13:23 · 113 阅读 · 0 评论 -
111. 二叉树的最小深度(java实现)--LeetCode
文章目录题目:解法1:递归题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000解法1:递归/** *原创 2021-01-21 17:28:09 · 196 阅读 · 0 评论 -
104. 二叉树的最大深度(java实现)--LeetCode
文章目录题目:解法1:递归题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解法1:递归 /** * 思路 * 遍历树 * 不断的递归,记录左右节点的深度,返回其中最大的 */ pub原创 2021-01-21 17:15:20 · 223 阅读 · 0 评论 -
98. 验证二叉搜索树(java实现)--LeetCode
文章目录题目:解法1:中序遍历解法2:递归解法3:stack题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,原创 2021-01-20 11:32:59 · 112 阅读 · 0 评论 -
226. 翻转二叉树(java实现)--LeetCode
文章目录题目:解法1:递归(从上到下)解法2:递归(自下到上)解法3:队列解法4:栈(和队列的代码完全一样)题目:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时原创 2021-01-20 11:09:10 · 160 阅读 · 0 评论 -
429. N 叉树的层序遍历(java实现)--LeetCode
文章目录题目:解法1:递归解法2:queue题目:给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,原创 2021-01-16 10:01:18 · 371 阅读 · 0 评论 -
590. N叉树的后序遍历(java实现)--LeetCode
文章目录题目:解法1:递归解法2:stack题目:给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个 3叉树 :返回其后序遍历: [5,6,3,2,4,1].说明: 递归法很简单,你可以使用迭代法完成此题吗?解法1:递归 public List<Integer> postorder(Node root) { ArrayList<Integer> result = new ArrayList<>(); recur原创 2021-01-16 09:33:10 · 112 阅读 · 0 评论 -
589. N叉树的前序遍历(java实现)--LeetCode
文章目录题目:解法1:递归解法2:stack题目:给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。说明: 递归法很简单,你可以使用迭代法完成此题吗?解法1:递归/** * 思路: * 先把当前节点加到结果集中 * 之后看每层的节点是否有children,有就继续进行递归 */ public List<Integer> preorder(Node root) { ArrayLis原创 2021-01-16 08:54:49 · 267 阅读 · 0 评论 -
145. 二叉树的后序遍历(java实现)--LeetCode
文章目录题目:解法1:递归解法2:stack解法3:Morris解法4:颜色遍历题目:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法1:递归 public List<Integer> postorderTraversal(TreeNode root) { ArrayList<Int原创 2021-01-01 19:21:15 · 135 阅读 · 0 评论 -
94. 二叉树的中序遍历(java实现)--LeetCode
解法1:递归 public List<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> result = new ArrayList<>(); recursive(root,result); return result; } private void recursive(TreeNode root, ArrayList<原创 2021-01-01 16:03:14 · 341 阅读 · 1 评论 -
144. 二叉树的前序遍历(java实现)--LeetCode
文章目录题目:解法1:递归解法2:栈解法3:Morris解法4:颜色标记题目:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0原创 2020-12-27 08:05:25 · 333 阅读 · 0 评论