旧魏(順トラバーサルシーケンスの23進探索木の後)---ブラシタイトルシリーズを学ぶためにあなたを取るの申し出を獲得します

23.以降のバイナリ検索ツリートラバーサルシーケンス

問題:

整数配列を入力して、アレイは、バイナリ検索ツリーをトラバースした後決意の結果ではありません。もし出力はい、そうでなければ出力号 任意の2つの数の入力配列が異なっていると仮定する。

ソリューション:

思想:

シーケンスの先行予約は、最後の番号は、数字のアレイの前に、ツリーのルートである二つの部分に分けることができる:最初の部分は、左サブツリーノードの値で、ルートノードの値よりも小さい、第二の部分は正しいです再帰上記の原則を満たすことにより決定される前に、2つの部分の後ろのサブツリーノードの値は、ルートノードは、それぞれ、より大きくなります。

Pythonコード:

# -*- coding:utf-8 -*-
class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        
        if(sequence==None or len(sequence)==0):
            return False
        n=len(sequence)
        root=sequence[-1]
        
        for i in range(n):
            if(sequence[i]>root):
                break
        for j in range(i,n):
            if(sequence[j]<root):
                return False
            
        left=True
        if i>0:
            left=self.VerifySquenceOfBST(sequence[0:i])
            
        right=True
        if(j<n-1):
            right=self.VerifySquenceOfBST(sequence[i:n-1])
            
        return left and right
公開された160元の記事 ウォン称賛30 ビュー70000 +

おすすめ

転載: blog.csdn.net/yixieling4397/article/details/104935608