劍指offer第24題 二叉搜尋樹的後序遍歷序列

2021-10-14 07:39:55 字數 773 閱讀 3431

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

5

/ \2 6

/ \1 3

示例 1:

輸入: [1,6,3,2,5]

輸出: false

示例 2:

輸入: [1,3,2,6,5]

輸出: true

陣列長度 <= 1000

思路:

需要知道,二叉樹的後序遍歷的根在**,後序遍歷的根最陣列的最後面。我們可以找出第乙個比根大的數作為右子樹的根,然後用這個右子樹的根做為分界點,我們通過這個分界點找出矛盾的點,因為是二叉搜尋樹,所以我們可以知道分界點右邊的數是不可能出現比根再小的數了,因為出現了的話就是有矛盾了(具體為什麼,去看看二叉搜尋樹的構成)。

//遞迴處理左子樹和右子樹(單獨劃分成兩個子樹)

return

dfs(l, k -1)

&&dfs

(k, r -1)

;}};

劍指offer 第24題二叉樹搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結 果。是返回true,否則返回false 思路 就是利用遞迴思想,先找到根節點,然後在拆分左右 遞迴。public class 24 test 24 test test new 24 test system.out.println test....

劍指offer 第26題 二叉搜尋樹與雙向鍊錶

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。中序遍歷可以得到二叉搜尋樹的從小到大排序,存在列表裡 class solution def convert self,prootoftree write code here if not...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 左節點,右節點,根節點是後序遍歷的順序。那麼,左子樹都小於根節點,右子樹都大於根節點。public class solution private ...