验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
思路:一开始想到了类似于求二叉树的最大深度时的递归办法,但是后来发现自己写的递归有bug,只能确保子树为二叉排序树,但是确不能保证所有右子树中的节点值大于根节点,所有左子树中的值小于根节点,因为根节点的值没有传下去。后来看到了一个很好的思路:因为二叉搜索树的中序遍历结果是一个递增的序列,所以我们先利用中序遍历获取二叉搜索树的中序遍历序列,然后判断该序列是否递增即可,若递增,则肯定为二叉搜索树,反之则不是二叉搜索树。
java代码如下:
1 | /** |