BST的合法性:validate-binary-search-tree
阿新 • • 發佈:2018-03-11
log min order eno pos 比較 binary 中序遍歷 結點
/** * 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); } } }*/
BST的合法性:validate-binary-search-tree