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

2021-10-02 18:01:49 字數 468 閱讀 6263

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

bst的後序序列的合法序列是,對於乙個序列s,最後乙個元素是x (也就是根),如果去掉最後乙個元素的序列為t,那麼t滿足:t可以分成兩段,前一段(左子樹)小於x,後一段(右子樹)大於x,且這兩段(子樹)都是合法的後序序列。完美的遞迴定義 : ) 。

注意寫法:從右往左遍歷,i指向右子樹第一位置,並且要驗證左子樹都小於a[right]

bool judge(vector& a, int left, int right)

return judge(a, left, i - 1) && judge(a, i, right - 1);

}bool verifysquenceofbst(vectorsequence)

劍指offer 32 從上往下列印二叉樹

這道題題目可以描述為 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。typedef int datatype typedef struct bstreenode bstreenode bstreenode createnode int data 本題的思路為 定義乙個佇列,每一...

(劍指Offer)32 從上往下列印二叉樹

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。遞迴的版本 這個遞迴的版本很有意思的地方在於他建立了乙個深度的函式用來判斷樹的深度,然後根據深度決定root向下偏移幾次。public void printfromtoptobottom treenode root for int i ...

劍指offer 32 從上到下列印二叉樹

宣告 本系列部落格是對何海濤 劍指offer 的關鍵點總結。從上到下列印出二叉樹的每乙個結點,同一層的結點按照從左到右的順序列印。如二叉樹 8 6 5,7 10 9,11 列印出8 6 10 5 7 9 11 1 使用佇列儲存要訪問的結點 2 從根結點開始,每次列印結點的時候,如果該結點有子結點,則...