判斷數組是不是某二叉搜索樹的后序遍歷的結果


題目描述

輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。
 
分析:
用遞歸實現。先把root節點拿出來,再把數組分成左右子樹
 
解答:
 
 
class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        if not sequence:
            return False
        if len(sequence)==1 or len(sequence)==2:
            return True
        left=[]
        right=[]
        root=sequence.pop()
        for i in range(len(sequence)):
            if root < sequence[i]:
                left=sequence[:i]
                right=sequence[i:]
                break
        for i in right:
            if i<=root:
                return False
        verify=True
        if left:
            verify&=self.VerifySquenceOfBST(left)
        if right:
            verify&=self.VerifySquenceOfBST(right)
        return verify

  

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM