![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
讲个笑话哈哈哈
慢慢来吧,谁都有努力的过程
展开
-
LeetCode——543. 二叉树的直径
题目描述:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。注意:两结点之间的路径长度是以它们之间边的数目表示。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。代码如下:/** * Definition for a binary原创 2021-04-14 11:14:37 · 91 阅读 · 0 评论 -
LeetCode——538. 把二叉搜索树转换为累加树
题目描述:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。示例 1:输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]输出:[30,36,21,36原创 2021-04-12 18:28:23 · 118 阅读 · 0 评论 -
二叉树的序列化与反序列化
中序://以head为头的树,序列化为字符串返回。public static String serialByPre(TreeNode head) { if (head == null) { return "#_"; } String res = head.val + "_"; res += serialByPre(head.left); res += serialByPre(head.right); return res;}publi原创 2021-03-27 11:04:06 · 64 阅读 · 0 评论 -
最近公共祖先
题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 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 和节点 1原创 2021-03-26 22:01:27 · 84 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历
题目描述:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例:输入:root = [1,null,2,3]输出:[1,2,3]代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right原创 2020-11-23 22:47:35 · 160 阅读 · 0 评论 -
LeetCode——226. 翻转二叉树
题目描述:翻转一棵二叉树。思路:前序遍历代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: T原创 2020-11-26 19:47:01 · 123 阅读 · 0 评论 -
LeetCode——938. 二叉搜索树的范围和
题目描述:给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 1051 <= low <= high <= 105所有 Node.val 互不相同示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3原创 2021-03-02 08:37:34 · 1562 阅读 · 3 评论 -
LeetCode——700. 二叉搜索树中的搜索
题目描述:给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。代码如下:/** * Definition for a binary tree nod原创 2021-03-01 10:14:16 · 64 阅读 · 0 评论 -
LeetCode——235. 二叉搜索树的最近公共祖先
题目描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”说明:所有节点的值都是唯一的。p、q 为不同节点且均存在于给定的二叉搜索树中。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]由于是二叉搜索树,所以递归更加方便。代码如下:/** * D原创 2020-11-26 14:29:20 · 118 阅读 · 0 评论 -
LeetCode——相同的树
题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。JAVA代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { thi原创 2021-02-02 21:06:20 · 1479 阅读 · 5 评论 -
LeetCode——101. 对称二叉树
题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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 3JAVA代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode原创 2021-02-02 20:54:11 · 174 阅读 · 2 评论 -
LeetCode——559. N 叉树的最大深度
题目描述:给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。提示:树的深度不会超过 1000 。树的节点数目位于 [0, 104] 之间。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:3示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,nu原创 2021-02-02 17:52:24 · 107 阅读 · 0 评论 -
LeetCode——二叉树的最大深度和平衡二叉树
题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例1:输入:root = [3,9,20,null,null,15,7]输出:true示例2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例3:输入:root = []输出:true代码如下:/** * Definition for a binary tree node. * struc原创 2020-11-23 22:01:52 · 254 阅读 · 0 评论 -
LeetCode——剑指 Offer 54. 二叉搜索树的第k大节点
题目描述:给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:示例 2:限制:1 ≤ k ≤ 二叉搜索树元素个数二叉排序树的一个重要性质:中序遍历一颗二叉树时可以得到一个节点值递增的有序序列。代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in原创 2020-11-25 11:34:29 · 99 阅读 · 0 评论 -
LeetCode——897. 递增顺序查找树
题目描述:给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。提示:给定树中的结点数介于 1 和 100 之间。每个结点都有一个从 0 到 1000 范围内的唯一整数值。示例 :JAVA代码如下:/**/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *原创 2021-01-15 11:46:38 · 77 阅读 · 0 评论 -
LeetCode——653. 两数之和 IV - 输入 BST
题目描述:给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:案例 2:代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right原创 2020-12-07 22:07:47 · 149 阅读 · 0 评论