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

2021-08-15 22:12:01 字數 649 閱讀 2096

題目:

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

思路:作為乙個二叉搜尋樹,它的左孩子節點必然要小於它的根節點,它的右孩子節點大於它的根節點,並且它的左子樹和右子樹都要滿足這個規則。

所以我們可以使用遞迴來實現。

public class solution 

if(sequence.length ==1)

return judge(sequence, 0, sequence.length-1);

}public boolean judge(int sequence, int l, int root)

int i=root-1;

while(i>=l&&sequence[i]>sequence[root]) //i>l

for(int j=l;j<=i;j++)

}return judge(sequence, l, i)&&judge(sequence, i+1, root-1);

}}

遞迴終止的條件比較難抽象出來,即當 l>=root時,滿足搜尋二叉樹的條件,返回true。

l=root時,是葉子節點,l>r時,是空樹,此時都是搜尋二叉樹。

劍指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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...