Thursday, June 12, 2014

Validate Binary Search Tree

判断一个binary tree是否是binary research tree
BST的定义: 左孩子的值 < root的值 < 右孩子的值, 左右子树都是BST
[Notes]:
在我的概念里,BST是可以有重复的value的, 但LC和Wikipedia都说不能有duplicate。 去看了下算法导论上的定义,也是可以相等的。 我还在迷惑中.... 此题要通过oj, 还是按LC的定义。

public class Solution {
    public boolean isValidBST(TreeNode root) {
        return validBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }
    
    public boolean validBST(TreeNode root, int min, int max){
        if(root==null) return true;
        if(root.val<=min || root.val>=max)
            return false;
        return validBST(root.left, min, root.val) && validBST(root.right, root.val, max);
    }
}

No comments:

Post a Comment