天天看點

資料結構與算法:判斷是不是二叉搜尋樹

描述

給定一個二叉樹根節點,請你判斷這棵樹是不是二叉搜尋樹。

public class BstTree {

    static class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
          this.val = val;
        }
    }

    /**
     * 代碼中的類名、方法名、參數名已經指定,請勿修改,直接傳回方法規定的值即可
     *
     *
     * @param root TreeNode類
     * @return bool布爾型
     */
    int pre = Integer.MIN_VALUE;
    public boolean isValidBST (TreeNode root) {

        if(null == root){
            return true;
        }

        if(!isValidBST(root.left)){
            return false;
        }

        // 搜尋二叉樹的特點. 利用中序周遊,目前節點應該比上一個節點的值大,否則不是搜尋二叉樹
        if(root.val < pre){
            return false;
        }

        pre = root.val;
        return isValidBST(root.right);
    }

    public static void main(String[] args) {

    }
}