劍指Offer 24 二叉搜尋樹的後續遍歷序列

2021-09-25 05:47:23 字數 589 閱讀 2861

題目:

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

思路:後序遍歷為lrv。因此陣列最後一位為根節點。陣列前半段為其左子樹,後半段為其右子樹,再每層遞迴時,我們找到左右子樹的分割點,分別判斷左右子樹是否小於/大於根節點,然後在對左右子樹進行遞迴。

**實現:

public

class

solution

else

if(sequence.length==10)

return

ver(sequence,

0,sequence.length-1)

;}private

boolean

ver(

int[

] arr,

int l,

int r)

//l到i-1為其左子樹

for(

int j=l;j)return

ver(arr,l,i-1)

&&ver

(arr,i,r-1)

;}}

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

二叉搜尋樹的性質是 元素的左子樹上的元素全部小於該元素,右子樹上的元素全部大於該元素。後序遍歷根節點總是在最後,所以根據後序遍歷順序可以得到根元素,並且得到根元素的左子樹和右子樹。假設樹的後序遍歷順序為 3,7,4,6,5 可以判斷出 5是根節點,3為根節點的左子樹,7,4,6是根節點的右子樹,但是...

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

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 既然是二叉搜尋樹,那麼排好序的陣列就是這棵樹的中序遍歷序列 使用中序遍歷序列和後序遍歷序列即可構造這棵樹 如果構造失敗,那這個序列就不是某一顆二叉搜尋...

劍指offer24 二叉樹的後序遍歷

思想 輸入乙個陣列,該陣列最後乙個元素即二叉樹的根節點,剩下的是左子樹和右子樹,左子樹比根節點小,右子樹比根節點大,循壞遍歷左右子樹 public class verifysequerceofbst if cut 0 verifysequenceofbst arrays.copyofrange ar...