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

2021-10-01 15:41:42 字數 717 閱讀 6517

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。

如果是則返回true,否則返回false。

假設輸入的陣列的任意兩個數字都互不相同。

樣例

輸入:[4, 8, 6, 12, 16, 14, 10]

輸出:true

首先要想,乙個二叉搜尋樹的後續遍歷結果意味著什麼?

根節點一定是陣列的最後乙個元素(左右根)。

陣列中一定有一段連續的子陣列比根節點小,這是左子樹部分;對應的,一定有一段連續的子陣列比根節點大,這是右子樹部分。

我們可以從前往後遍歷陣列,找到這樣乙個元素,它的前面的元素都比10小,從它開始到10都比10大。然後遞迴地再去這兩個子陣列中(左子樹,右子樹)中判斷,判斷結果取&&。

class

solution

return

dfs(

0,seq.length-

1,seq);}

public

boolean

dfs(

int l,

int r,

int[

] seq)

for(

int i=cur;i)return

dfs(l,cur-

1,seq)

&&dfs

(cur,r-

1,seq);}

}

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