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

2021-08-28 03:30:57 字數 1394 閱讀 6630

# -*- coding:utf-8 -*-

class solution:

def verifysquenceofbst(self, sequence):

# write code here

'''if sequence==:

return false

return self.judge(sequence,0,len(sequence)-1)

def judge(self,seq,start,end):

if start>=end:

return true

root=seq[end]

i=end

while i>start and seq[i-1]>seq[end]:

i=i-1

j=i-1

while j>=start:

if seq[j]>seq[end]:

return false

j=j-1

return self.judge(seq,start,i-1) and self.judge(seq,i,end-1)

'''if len(sequence)==0:

return false

return self.charge(sequence)

def charge(self,sequence):

length=len(sequence)

if length==0:

return true

if length==1:

return true

root=sequence[-1]

small=0

while sequence[small]0:

left=self.verifysquenceofbst(sequence[:small])

if len(sequence[small:length-1]):

right=self.verifysquenceofbst(sequence[small:length-1])

return left and right

'''

二叉搜尋樹是父節點的左孩子都比父節點小,右孩子都比父節點大。首先從根節點開始判斷,根節點是s[-1],即最後乙個元素。然後從陣列開始遍歷,找到不滿足s[small]root,返回false。注意遞迴的終點是遍歷到葉子節點,或空節點,此時陣列只有乙個元素或沒有元素。

還有一些細節:

while sequence[small]for i in range(small,length-1):

if sequence[i]判斷邊界,s[small]第二個判斷時length-1寫成length也是可以的,因為判斷到root時s[i]==root

劍指Offer 二叉搜尋樹的後序遍歷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...

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

時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。簡單思路 二叉搜尋樹 1.左孩子 根 右孩子 2.bst的左孩子和右孩子都是bst 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...