【Leetcode】98. Validate Binary Search Tree

题目地址:
98. Validate Binary Search Tree

题意:判断一个二叉树是否是平衡二叉树。
平衡二叉树的性质就是中序遍历得到的是一个递增的数组。
很容易就写出下面方法:

class Solution {
    public boolean isValidBST(TreeNode root) {
        if(root==null)return true;
        List vec = new ArrayList<>();
        inorder(root,vec);
        for(int i=0;i=vec.get(i+1))return false;
        }
        return true;

    }
    public void inorder(TreeNode root,List vec){
        if(root==null)return ;
        inorder(root.left,vec);
        vec.add(root.val);
        inorder(root.right,vec);
    }
}

看网上的还有一种思路就是遍历时记录最大值和最小值。

class Solution {
    public boolean isValidBST(TreeNode root) {
        if(root==null)return true;
        return isValidBST(root,Long.MIN_VALUE, Long.MAX_VALUE);
        //因为有着Intefer.MAX_VALUE测试数据,这里需要long
    }
    public boolean isValidBST(TreeNode root,long min,long max){
        if(root==null)return true;
        if(root.val<=min||root.val>=max)return false;
        return isValidBST(root.left,min,root.val)&&isValidBST(root.right,root.val,max);
    }
}

你可能感兴趣的:(LEETCODE)