舉例讓抽象具體化 二叉搜尋樹的後序遍歷序列

2021-09-12 02:25:00 字數 1339 閱讀 4117

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

思路:1、判斷輸入為空、二叉樹只有左子樹、二叉樹只有右子樹的情況

2、使用index分割左右子樹

3、使用遞迴判斷左右子樹是否為後序遍歷

python實現:

// an highlighted block

# -*

- coding:utf-8-

*-class

solution

: def verifysquenceofbst

(self, sequence)

: # write code here

iflen(sequence)

<=0:

return false

root = sequence[-1

] length =

len(sequence)

ifmin

(sequence)

>root or max

(sequence)

return true #二叉樹只有乙個子樹的情況下是後序遍歷

index =

0for i in

range

(length-1)

: #用index分割左右子樹

index = i

if sequence[i]

> root:

break

#由於預設sequence[index]

>root所以可以從index+

1開始 for j in

range

(index+

1,length-1)

:if sequence[j]

< root:

return false

left = true

right = true

if index >

0: #存在左子樹,遞迴左子樹

left = self.

verifysquenceofbst

(sequence[

:index]

)if index < length-

1: #存在右子樹,遞迴右子樹

right = self.

verifysquenceofbst

(sequence[index:length-1]

)return left&right #只有當左右子樹都為後序遍歷時,結果為後序遍歷

舉例讓抽象問題具體化 二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。public class solution return judge sequence,0,sequence.length 1 public boolean ju...

舉例讓抽象具體化 從上往下列印出二叉樹

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。思路 使用佇列儲存,每次把佇列裡的原來內容進行出佇列操作。接下來把每個元素的非空左右子節點進入佇列。即可以得到每層的遍歷。python實現 an highlighted block from collections import deque cl...

劍指offer 舉例讓抽象具體化

問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的 min 函式 時間複雜度應為 o 1 注意 保證測試中不會當棧為空的時候,對棧呼叫 pop 或者 min 或者 top 方法。const datastack 棧 const minstack 儲存棧中最小的元素 functi...