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