輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。
如果是則返回true,否則返回false。
假設輸入的陣列的任意兩個數字都互不相同。
樣例
輸入:[4, 8, 6, 12, 16, 14, 10]
輸出:true
首先要想,乙個二叉搜尋樹的後續遍歷結果意味著什麼?
根節點一定是陣列的最後乙個元素(左右根)。
陣列中一定有一段連續的子陣列比根節點小,這是左子樹部分;對應的,一定有一段連續的子陣列比根節點大,這是右子樹部分。
我們可以從前往後遍歷陣列,找到這樣乙個元素,它的前面的元素都比10小,從它開始到10都比10大。然後遞迴地再去這兩個子陣列中(左子樹,右子樹)中判斷,判斷結果取&&。
class
solution
return
dfs(
0,seq.length-
1,seq);}
public
boolean
dfs(
int l,
int r,
int[
] seq)
for(
int i=cur;i)return
dfs(l,cur-
1,seq)
&&dfs
(cur,r-
1,seq);}
}
劍指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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...