/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { //方法1:每个结点都对应一个上限,一个下限。 public boolean isValidBST(TreeNode root) { return isValidRoot(root, Integer.MIN_VALUE, Integer.MAX_VALUE); } public boolean isValidRoot(TreeNode root,int lower,int upper) { if(root==null) return true; if(root.val<=lower || root.val>=upper) return false; return isValidRoot(root.left, lower, root.val) && isValidRoot(root.right, root.val, upper); } } /* //方法2:中序遍历,记录前一个结点,与当前结点的值比较。 public boolean isValidBST(TreeNode root) { inorderTraversal(root); return isValidBST; } TreeNode pre; boolean isValidBST=true; public void inorderTraversal(TreeNode root) { if(root!=null) { inorderTraversal(root.left); if(pre!=null && pre.val>=root.val) isValidBST=false; pre=root; inorderTraversal(root.right); } } } */