1. 程式人生 > >BST的合法性:validate-binary-search-tree

BST的合法性:validate-binary-search-tree

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