98. Validate Binary Search Tree
题目描述和难度
- 题目描述:
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入: 2 / \ 1 3 输出: true
示例 2:
输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。
- 题目难度:中等。
- 英文网址:98. Validate Binary Search Tree 。
- 中文网址:98. 验证二叉搜索树 。
思路分析
求解关键:利用 BST 经过中序遍历以后,得到的是一个顺序数组。
参考解答
参考解答1
import java.util.ArrayList;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public class Solution {
public boolean isValidBST(TreeNode root) {
if (root == null) {
return true;
}
ArrayList<Integer> list = new ArrayList<>();
inOrder(root, list);
int len = list.size();
for (int i = 0; i < len - 1; i++) {
if (list.get(i) >= list.get(i + 1)) {
return false;
}
}
return true;
}
private void inOrder(TreeNode treeNode, ArrayList<Integer> list) {
if (treeNode == null) {
return;
}
inOrder(treeNode.left, list);
list.add(treeNode.val);
inOrder(treeNode.right, list);
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0098-validate-binary-search-tree ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。