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

2021-09-10 22:27:54 字數 845 閱讀 4413

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

思路:後續遍歷最後乙個節點必定為根節點。

將前面所有《該節點的值存入左子樹

一旦遇到》的值,將從這個節點開始到結尾前乙個的值存入右子樹(一旦在這裡遍歷出小於根節點的值,則說明此樹不能滿足二叉搜尋樹所有小於根節點的值都在左,大於都在右這一性質,返回false);

如果遍歷完沒有問題,用遞迴的方法繼續遍歷左右子樹,直到遍歷完全部的左右子樹,返回結果。

public boolean verifysquenceofbst(int  sequence) 

int length = sequence.length;

int root = sequence[length-1];

int endl = 0;

for (int i = 0 ; i < length-1 ; i++)

endl = i;

}int startr = endl+1;

for (int j = endl+1; j < length-1 ; j++)

}boolean left = true;

if (endl > 0 )

left = verifysquenceofbst(leftsequence);

}boolean rigtht =true;

if ( startr < length-1 )

rigtht = verifysquenceofbst(rigthtsequence);

}return left&&rigtht;

}

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 遞迴。最後乙個數字是樹的根節點,第一部分是左子樹節點的值,都比根節點小。第二部分是右子樹節點的值,都比根節點大。class solution de...

劍指Offer 33 二叉搜尋樹的後序遍歷

由於是後序遍歷,所以陣列最後乙個元素是根節點 遞迴開始傳入起始元素 和 末尾元素 當起始索引 left right 結束遞迴 執行迴圈,找到第乙個比根節點大的元素 temp 它的左面是樹的左子樹,右面到根節之間是樹的右子樹 判斷temp 到 root 之間的結點是否全部大於根節點 進行下一次遞迴,直...

劍指offer 33 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 複製 首先先理解題意,映象通過以下幾個步驟可以實現 可以看到首先對根節點的左右進行翻轉。再遞迴的對左子樹,以及右子樹進行翻轉。之前講過,鍊錶的題目分為四...