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

2021-10-24 10:41:07 字數 706 閱讀 3539

由於是後序遍歷,所以陣列最後乙個元素是根節點

遞迴開始傳入起始元素 和 末尾元素

當起始索引(left)<(right)結束遞迴

執行迴圈,找到第乙個比根節點大的元素(temp),它的左面是樹的左子樹,右面到根節之間是樹的右子樹

判斷temp 到 root 之間的結點是否全部大於根節點

進行下一次遞迴,直到滿足中止條件

class

solution

public

boolean

recur

(int

postorder,

int left,

int right )

//因為是後序遍歷,最後乙個結點就是根節點

int root=postorder[right]

;int min=left;

while

(postorder[min]

//temp 是比root大的第乙個結點,

//它的左面是比root結點小的,它的右面是比root 結點大的

int temp=min;

while

(temp}return

recur

(postorder,left,min-1)

&&recur

(postorder,min,right-1)

;}}

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

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

劍指offer 33 二叉樹映象

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

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

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後續遍歷結果,如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。例 輸入陣列 5,7,6,9,11,10,8 則返回true。因為這個整數序列是下樹的後序遍歷。8 6 10 5 7 9 11如果輸入的陣列是 7,4,6,...