98. 验证二叉搜索树
My Solution
利用二叉搜索树的中序遍历一定是有序的解决
class Solution {List<Integer> list = new ArrayList<>();public boolean isValidBST(TreeNode root) {visit(root);if (list.size() <= 1) {return true;}for (int i = 1; i < list.size(); i++) {if (list.get(i - 1) >= list.get(i))return false;}return true;}public void visit(TreeNode root) {if (root == null)return ;visit(root.left);list.add(root.val);visit(root.right);}}
递归写法
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}public boolean isValidBST(TreeNode root, long lower, long upper) {if (root == null) {return true;}if (root.val >= upper || root.val <= lower) {return false;}return isValidBST(root.left, lower, root.val) && isValidBST(root.right, root.val, upper);}}
