題目:
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出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...