1. 程式人生 > >【劍指offer】二叉搜尋樹的後序遍歷

【劍指offer】二叉搜尋樹的後序遍歷

題目描述

輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。
二叉搜尋樹是左子樹都比跟小,右子樹都比跟大
陣列的最後一個數字為root,然後一串比root小的為左子樹,一串比root大的為右子樹,當右子樹中有比root小的返回false,可以用遞迴的方式判斷左子樹和右子樹


class Solution:
    def VerifyCore(self, sequence, start, end):
        #print(start, end)
        if start ==
end: return True root = sequence[end] for i in range(start, end + 1): if sequence[i] > root: break for j in range(i, end + 1): if sequence[j] < root: return False left = right = True if
i > start: left = self.VerifyCore(sequence, start, i - 1) if i < end - 1: right = self.VerifyCore(sequence, i, end - 1) return left and right def VerifySquenceOfBST(self, sequence): # write code here if sequence == []: return
False return self.VerifyCore(sequence, 0, len(sequence) - 1) sequence = [7,4,6,5] print(Solution().VerifySquenceOfBST(sequence))