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

2021-10-13 20:15:15 字數 632 閱讀 8450

23. 二叉搜尋樹的後序遍歷序列

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

1、思路

舉例說明:

以為例,後序遍歷結果的最後乙個數字8就是根結點的值。在這個陣列中,前3個數字5、7和6都比8小,是值為8的結點的左子樹結點;後3個數字9、11和10都比8大,是值為8的結點的右子樹結點。

我們接下來用同樣的方法確定與陣列每一部分對應的子樹的結構。這其實就是乙個遞迴的過程。對於序列5、7、6,最後乙個數字6是左子樹的根結點的值。數字5比6小,是值為6的結點的左子結點,而7則是它的右子結點。同樣,在序列9、11、10中,最後乙個數字10是右子樹的根結點,數字9比10小,是值為10的結點的左子結點,而11則是它的右子結點。

我們使用遞迴的方法,先判斷陣列的左子樹和右子樹的位置,然後再判斷左子樹、右子樹是不是二叉搜尋樹。

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

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。例如返回true 而返回false。二叉搜尋樹 樹中沒有值相同的兩個節點,對於每乙個節點,它左邊所有節點都比它小,右邊所有節點都比它大。本題的關鍵在於找到後序遍歷...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。class solution 思路 已知條件 後序序列最後乙個值為root 二叉搜尋樹左子樹值都比root小,右子樹值都比root大。1 確定root ...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。總結 一 遞迴方式 好理解 1 熟悉後序遍歷原理,後序遍歷陣列最後乙個元素為根節點root 2 判斷找出左 右子樹集合的分界下標,然後分別遞迴判斷 3 ...