輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。
如果是則輸出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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...