Tree 023 二叉搜尋樹的後序遍歷

2021-10-04 17:04:27 字數 830 閱讀 3283

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

一棵 bst :左孩子 < 根結點 < 右孩子

一棵 bst 的左子樹或者右子樹都是 bst

後序遍歷是,左右根:[3, 4, 9, 5, 12, 11, 10],結合圖再從左往右分析後序序列,分析子樹,可以發現:

樹區間的最後乙個數是樹的根節點

第乙個大於根節點的樹區分左右子樹

所以只要找到第乙個大於根節點的樹

劃分左右子樹

再判斷一下右子樹中的樹是否都大於根節點

再縮短區間 遞迴每一棵子樹 保證每一棵樹都是符合這樣的規律即可

public

class

solution

//此時已經保證了i前面的數都是小於根節點的 再判斷一下右子樹中是否存在小於根節點的

for(

int j = i ; j < end; j++

)//遞迴判斷左子樹 右子樹是否同樣滿足 左子樹《根節點《右子樹

return

helpverify

(sequence,start,i-1)

&&helpverify

(sequence,i,end-1)

;}public

boolean

verifysquenceofbst

(int

sequence)

}

Tree 二叉搜尋樹

每個節點最多兩個子節點,其中左邊節點的值小於該節點的值,右邊節點的值大於該節點的值。為了簡便起見,該二叉樹裝入的資料為整數,且不允許有重複的關鍵字值。程式設計中為了簡便,採用了遞迴演算法,運算時會帶來額外的開銷,如果能將相應的演算法替換為迭代,則更為有效。刪除的演算法相應複雜一些,但也可以承受。ap...

二叉搜尋樹的後序遍歷

二叉搜尋樹的後序遍歷序列中,最後乙個值是根結點,前面比根節點小的是左結點,後面比根結點大的是右結點。include include bool verifysquenceofbst int sequence,int length int root sequence length 1 int i 0 在...

二叉搜尋樹的後序遍歷

描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷。如果是,則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。1 樣例輸入 5 7 6 9 11 10 8 1 樣例輸出 yes 2 樣例輸入 7 4 6 5 2 樣例輸出 no 首先要知道二叉搜尋樹的定義 或者是一棵空樹...