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

2021-09-02 20:33:21 字數 909 閱讀 6618

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。

如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同

思路:根據平衡二叉樹及後序遍歷的性質,可以得出給定陣列的最後乙個數字是根節點,bst左子樹的節點都小於根節點,右子樹的節點都大於根節點,按照此規律可以找出序列裡的左子樹節點和右子樹節點,接著判斷,如果右子樹節點裡存在著小於根節點的資料,那麼肯定不是後序序列。

public

boolean

verifysquenceofbst

(int

sequence)

return

isvalidpostorder

(sequence,

0, sequence.length -1)

;}public

boolean

isvalidpostorder

(int

sequence,

int start,

int end)

int root = sequence[end]

;int k;

//找出左右子樹的分界點

for(k = start; k < end; k++)}

int i = k;

//如果右子樹中有小於根節點的節點,返回false

for(

; i < end ;i++)}

//遞迴判斷左子樹和右子樹

return

isvalidpostorder

(sequence, start, k-1)

&&isvalidpostorder

(sequence, k, end-1)

;}

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

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...

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

時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。簡單思路 二叉搜尋樹 1.左孩子 根 右孩子 2.bst的左孩子和右孩子都是bst 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...