1. 程式人生 > >《劍指offer》系列 二叉搜尋樹的後序遍歷序列(Java)

《劍指offer》系列 二叉搜尋樹的後序遍歷序列(Java)

連結

牛客:二叉搜尋樹的後序遍歷序列

題目描述

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

思路

後序遍歷數字的順序小大中,這裡面的小和大其實是子樹的序列,中是單個數字,小和大又可以再分小大中,所以後序遍歷的結果有什麼規律呢?就是說每個數字的前面的數字從左向右一定是先大於這個數字再小於這個數字,滿足條件的就是二叉搜尋樹的後序遍歷的結果。

程式碼

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        int length = sequence.length;
        if(length==0)
            return false;
        int i = 0;
        length--;
        while(length != 0)
        {
            while(sequence[i] < sequence[length])
            {
                i++;
            }
            while(sequence[i] > sequence[length])
            {
                i++;
            }
            if(i < length)
                return false;
            i = 0;
            length--;
		}
        return true;
    }
}