随笔分类 - leetcode_二叉树
摘要:538. 把二叉搜索树转换为累加树 题目链接:538. 把二叉搜索树转换为累加树(中等) 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满
阅读全文
摘要:108. 将有序数组转换为二叉搜索树 题目链接:108. 将有序数组转换为二叉搜索树(简单) 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1:
阅读全文
摘要:669. 修剪二叉搜索树 题目链接:669. 修剪二叉搜索树(中等) 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都
阅读全文
摘要:450. 删除二叉搜索树中的节点 题目链接:450. 删除二叉搜索树中的节点(中等) 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找
阅读全文
摘要:701. 二叉搜索树中的插入操作 题目链接:701. 二叉搜索树中的插入操作(中等) 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后
阅读全文
摘要:235. 二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先(简单) 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可
阅读全文
摘要:236. 二叉树的最近公共祖先 题目链接:236. 二叉树的最近公共祖先(中等) 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节
阅读全文
摘要:501. 二叉搜索树中的众数 题目链接:501. 二叉搜索树中的众数(简单) 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右
阅读全文
摘要:530. 二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差(简单) 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root = [4,2,6,1,3]输出:1 示例 2: 输入:
阅读全文
摘要:98. 验证二叉搜索树 题目链接:98. 验证二叉搜索树(中等) 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例
阅读全文
摘要:700. 二叉搜索树中的搜索 题目链接:700. 二叉搜索树中的搜索(简单) 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值:
阅读全文
摘要:617. 合并二叉树 题目链接: 617. 合并二叉树(简单) 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树
阅读全文
摘要:654. 最大二叉树 题目链接:654. 最大二叉树(中等) 给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下: 二叉树的根是数组 nums 中的最大元素。 左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。 右子树是通过数组中 最大值右边部分
阅读全文
摘要:105. 从前序与中序遍历序列构造二叉树 题目链接:105. 从前序与中序遍历序列构造二叉树(中等) 给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。 示例 1: 3 / \ 9 20 / \ 15 7 Input: preorder = [3,9,2
阅读全文
摘要:106. 从中序与后序遍历序列构造二叉树 题目链接:106. 从中序与后序遍历序列构造二叉树(中等) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,
阅读全文
摘要:113. 路径总和 II 题目链接:113. 路径总和 II(中等) 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5,4,8,11,null,1
阅读全文
摘要:112. 路径总和 题目链接:112. 路径总和(简单) 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节
阅读全文
摘要:513. 找树左下角的值 题目链接:513. 找树左下角的值(中等) 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3]输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,n
阅读全文
摘要:404. 左叶子之和 题目链接:404. 左叶子之和(简单) 计算给定二叉树的所有左叶子之和。 示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 题解 思路 这道题的关键是如何找到左叶子节点。通过观察,我们可以发现,判断节点是否是左叶
阅读全文
摘要:572. 另一棵树的子树 题目链接:572. 另一棵树的子树(简单) 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节
阅读全文