劍指offer系列:二叉搜索樹的後序遍歷序列

描述

輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。

代碼

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length==0){
            return false;
        }
        int i = sequence.length-1;
        return judge(sequence,0,i);
        
    }
    
    boolean judge(int[] arr,int left,int right){
        if(left>=right){
            return true;
        }
        int root = arr[right];
        int i = left;
        while(arr[i]<root){
            i++;
        }
        int j = i;
        while(j<right){
            if(arr[j]<root){
                return false;
            }
            j++;
        }
       return judge(arr,0,i-1)&&judge(arr,i,j-1);
    }
}

心得

二叉樹的後續遍歷 左 右 根 ,所以從後往前依次是 根 右子樹 左子樹
只需要驗證左子樹均小於根 右子樹均大於根 且 子樹也符合上面的要求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章