JZ23 二叉搜尋樹的後序遍歷

2021-10-10 13:40:54 字數 733 閱讀 5056

題目描述

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

解:該題目首先需要清楚二叉搜尋樹的概念,二叉搜尋樹:左子樹小於根節點,右子樹大於根節點;然後就是清楚後續遍歷的概念:左子樹 -> 右子樹 -> 根節點;那麼剩下的問題就比較容易分析了,具體分析過程如下:

通過上圖的分析,以最後乙個數為根節點,依次進行遞迴劃分就可以得出結論,具體程式實現如下:

class

solution

bool

findbst

(vector<

int> sequence,

int start,

int end)

for(

int i = start;i < end;i++

)return

findbst

(sequence,

0, start -1)

;if(result ==

true

) result =

findbst

(sequence, start,end -1)

;return result;}}

;

JZ23 二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。ps 我們約定空樹不是二叉搜尋樹 輸入 4,8,6,12,16,14,10 返回值 true 就是根據二叉樹後序遍歷結果判斷是不是 bst。結合他倆的特點...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解題思路 遞迴解法 樹的後序遍歷方式是左右根,比如對於遍歷序列 4,8,6,12,16,14,10 那麼就可以知道10就是根節點,前面的左子樹和右子樹需...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。class solution bool dfs vector int s,int st,int en for int j i j j retur...