【題目描述】輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
【簡單思路】
二叉搜尋樹:
1.左孩子《根《右孩子;
2.bst的左孩子和右孩子都是bst
發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 那麼,只需要不斷地確定出左子樹區間和右子樹區間,並且判斷:左子樹區間的所有結點值 < 根結點值 < 右子樹區間所有結點值,這個條件是否滿足即可
public
class
solution
return
isbst
(sequence,
0, sequence.length-1)
;}private
boolean
isbst
(int
seq,
int start,
int end)
int val = seq[end]
;int split = start;
for(
; splitfor(
int i=split; ireturn
isbst
(seq, start, split-1)
&&isbst
(seq, split, end-1)
;}}
劍指Offer 二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...
劍指offer 二叉搜尋樹的後序遍歷
時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...
劍指offer 二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。一開始不是很明白題目意思,以為是讓我後序遍歷某棵二叉樹 後來搞明白了。二叉搜尋樹就像是二分查詢裡面的,左子樹的所有元素都小於根節點,右子樹的所有元素都大於根節點。...