1. 程式人生 > >24二叉搜尋樹的後序遍歷python

24二叉搜尋樹的後序遍歷python

題目:輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出True否則輸出False。假設輸入的陣列的任意兩個數字都互不相同。
思路:1、判斷輸入為空、二叉樹只有左子樹、二叉樹只有右子樹的情況
2、使用index分割左右子樹
3、使用遞迴判斷左右子樹是否為後序遍歷

class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        if len(sequence) <= 0:
            return False
        root = sequence
[-1] length = len(sequence) if min(sequence)>root or max(sequence)<root: return True #二叉樹只有一個子樹的情況下是後序遍歷 index = 0 for i in range(length-1): #用index分割左右子樹 index = i if sequence[i] > root: break #由於預設sequence
[index]>root所以可以從index+1開始 for j in range(index+1 ,length-1): if sequence[j] < root: return False left = True right = True if index > 0: #存在左子樹,遞迴左子樹 left = self.VerifySquenceOfBST(sequence[:index]) if index < length-1
: #存在右子樹,遞迴右子樹 right = self.VerifySquenceOfBST(sequence[index:length-1]) return left&right #只有當左右子樹都為後序遍歷時,結果為後序遍歷