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

2021-10-24 14:54:43 字數 864 閱讀 2387

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

5

/ \ 2

6/ \

13

示例 1:

輸入:[1

,6,3

,2,5

]輸出:

false

示例 2:

輸入:[1

,3,2

,6,5

]輸出:

true

二叉搜尋樹的特點是左子樹小於根節點,右子樹大於根節點;後序遍歷的順序是左節點,右節點,根節點。根據這個特點可以知道陣列的最後乙個值肯定是根節點。有根據二叉搜尋樹的性質得知陣列前半部(左子樹部分)肯定小於根節點,後半部(右子樹部分)肯定大於根節點。根據這個特點來判斷是否是二叉搜尋樹。

當判斷出當前子樹是二叉搜尋樹時,還需要判斷當前根節點的左右子樹是否也符合二叉搜尋樹的條件。

public

class

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

//每次判斷乙個子樹,r表示子樹的跟節點,l表示子樹在陣列中的起點

private

boolean

dfs(

int[

] arr,

int l,

int r)

}

提交結果:

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

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

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

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

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

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的陣列的任意兩個數字都互不相同。5 2 6 1 3 示例 1 輸入 1,6,3,2,5 輸出 false 示例 2 輸入 1,3,2,6,5 輸出 true 陣列長度 1000 思路 ...