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

2021-10-06 07:00:31 字數 1140 閱讀 7905

題目描述

輸入乙個非空整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。

題意:該題描述的不夠清楚,構建二叉樹的依據是:左子樹《當前根《右子樹

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

class

solution

:def

__init__

(self)

: self.sequence =

defdfs

(self, l, r)

:if l >= r:

return

true

root = self.sequence[r]

# 當前根

idx =

none

for idx in

range

(l, r)

:# 分割左右子樹,左:[l, idx-1] 右:[idx, r-1]

if self.sequence[idx]

> root:

break

if self.sequence[idx]

< root:

# 只有左子樹

return self.dfs(l, r-1)

for i in

range

(idx, r)

:# 判斷右子樹是否有小於root,若存在說明右子樹不合法

if self.sequence[i]

< root:

return

false

return self.dfs(l, idx-1)

and self.dfs(idx, r-1)

# 繼續遍歷左右子樹

defverifysquenceofbst

(self, sequence)

:# write code here

self.sequence = sequence

ifnot sequence:

return

false

return self.dfs(0,

len(sequence)-1

)

劍指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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...