1. 程式人生 > >驗證二叉搜尋樹

驗證二叉搜尋樹

根據二叉搜尋樹的特點可以得出結論:

二叉搜尋樹的中序遍歷結果排序從左到右依次遞增。

那麼通過一次中序遍歷就可以檢測該樹是否為二叉搜尋樹。

程式碼如下:

 
class Solution {
    public  int temp=0;
    public  boolean firstNode=true;
    
    public boolean isValidBST(TreeNode root) {
         if(root==null){
            return true;
        }
        //遍歷左子樹
        if(!isValidBST(root.left)){
            return false;
        }
        //利用firstNode來獲取中序遍歷的第一個值
        //比較temp傳遞過來的值是否大於當前值,如果大於就說明前一個數大於現在節點的值,即不為二叉搜尋樹
        if(!firstNode&&temp>=root.val)return false;
        temp=root.val;

        //利用firstNode來獲取中序遍歷的第一個值
        firstNode=false;
        //繼續遍歷
        if(!isValidBST(root.right)){
            return false;
        }
        return true;
        //中序遍歷的結果排列為從左到右依次遞增   
    }
}