二叉搜索树(Binary Search Tree)也叫二叉查找树。
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:1
2
3
4
5输入:
2
/ \
1 3
输出: true
示例 2:1
2
3
4
5
6
7
8
9输入:
5
/ \
1 4
/ \
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
解题思路
利用二叉搜索树中序遍历得到是一个升序数组的特点,使用一个全局变量记录前一个节点,递归与当前节点比较,如果都比当前节点小,那么就是一个二叉搜索树
golang 实现
1 | type TreeNode struct { |