描述:给定一个二叉树的根节点 root
。
要求:判断其是否是一个有效的二叉搜索树。
说明:
-
二叉搜索树特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
- 树中节点数目范围在$[1, 10^4]$ 内。
-
$-2^{31} \le Node.val \le 2^{31} - 1$ 。
示例:
输入:root = [2,1,3]
输出:true
输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。
描述:给定一个升序的有序数组 nums
。
要求:将其转换为一棵高度平衡的二叉搜索树。
说明:
-
$1 \le nums.length \le 10^4$ 。 -
$-10^4 \le nums[i] \le 10^4$ 。 -
nums
按严格递增顺序排列。
示例:
输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案
输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
描述:给定一个二叉搜索树的根节点 root
,以及两个指定节点 p
和 q
。
要求:找到该树中两个指定节点的最近公共祖先。
说明:
- 祖先:若节点
p
在节点node
的左子树或右子树中,或者p == node
,则称node
是p
的祖先。 - 最近公共祖先:对于树的两个节点
p
、q
,最近公共祖先表示为一个节点lca_node
,满足lca_node
是p
、q
的祖先且lca_node
的深度尽可能大(一个节点也可以是自己的祖先)。 - 所有节点的值都是唯一的。
p
、q
为不同节点且均存在于给定的二叉搜索树中。
示例:
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6
解释: 节点 2 和节点 8 的最近公共祖先是 6。
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。
- 「0098. 验证二叉搜索树」习题解析:网页链接、Github 链接
- 「0108. 将有序数组转换为二叉搜索树」习题解析:网页链接、Github 链接
- 「0235. 二叉搜索树的最近公共祖先」习题解析:网页链接、Github 链接