1. 程式人生 > >(劍指offer)二叉搜搜索樹的後序遍歷

(劍指offer)二叉搜搜索樹的後序遍歷

時間限制:1秒 空間限制:32768K 熱度指數:294137

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

思路
二叉搜尋樹後序遍歷,最右邊必然是根,左子樹全部小於根,右子樹全部大於等於根,由根找到右子樹開始元素,判定右子樹是否有元素小於等於根,再遞迴判定即可

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        //假定空陣列返回false
        if
(sequence == null || sequence.length == 0){ return false; } return judge(sequence, 0, sequence.length-1); } public boolean judge(int[] a, int st, int en){ //a[en]就是根 if(st>=en){ return true; } int i = st; //找到右子樹的第一個元素
while(i<=en && a[i]<a[en]){ i++; } for(int j = i+1; j < en; j++){ if(a[j]<a[en]){ return false; } } return judge(a, st, i-1) && judge(a, i, en-1); } }