劍指offer 23:二叉搜索樹的後序遍歷--- Java實現

劍指offer每日一題算法題(java解法)

方便日後複習,從今天開始。

算法之行始於足下

[編程題]二叉搜索樹的後序遍歷-- Java實現

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

解題思路:
最後一個數字是樹的根節點 ,數組中前面的數字可以分爲兩部分:第一部分是左子樹節點 的值,都比根節點的值小;第二部分 是右子樹 節點的值,都比 根 節點 的值大,後面用遞歸分別判斷前後兩部分 是否 符合以上原則

可以看一篇寫的不錯的,也是講這題二叉搜索樹的後序遍歷

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
         if(sequence.length == 0) return false;
         return IsTreeBST(sequence, 0, sequence.length-1);
    }
    public boolean IsTreeBST(int [] sequence,int start,int end ){
        if(end <= start) return true;
        int i = start;
        for (; i < end; i++) {
             if(sequence[i] > sequence[end]) break;
        }
        for (int j = i; j < end; j++) {
            if(sequence[j] < sequence[end]) return false;
        }
        //遞歸調用
        return IsTreeBST(sequence, start, i-1) && IsTreeBST(sequence, i, end-1);
    }
}
發佈了56 篇原創文章 · 獲贊 11 · 訪問量 2043
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章