劍指offer23題 經典遞迴

2022-06-16 16:09:10 字數 882 閱讀 5206

/**

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

* 如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。

* * 思路

* 二叉搜尋樹,滿足根節點大於左子樹所有節點,小於右子樹左右節點

* 將陣列從後往前遍歷,每個節點都是所在子樹的根節點

* 根節點,大於左子樹所有節點,小於右子樹左右節點,且子樹仍然滿足二叉搜尋樹

* * 把最後乙個看作root,當前樹怎麼滿足二叉搜尋樹的後序遍歷。 */

public

class

solution23

return verifysquenceofbst(sequence, 0, sequence.length - 1);

}private

boolean verifysquenceofbst(int sequence, int start, int

root)

int i =start;

/*** 2、處理結果

*///

根節點,大於左子樹所有節點

for (; i < root; i++)

}//根節點,小於右子樹左右節點

for (int right = i; right < root; right++)

}/*** 3、縮小範圍

*///

子樹仍然滿足二叉搜尋樹

return verifysquenceofbst(sequence, 0, i - 1) && verifysquenceofbst(sequence, i, root - 1);

}}

1、處理退出條件

2、處理結果

3、縮小範圍

劍指offer 面試23題

面試23題 題目 如果乙個鍊錶中包含環,如何找出環的入口節點?解題分析 其實此題可以分解為三個題目 1 如何判斷乙個鍊錶中是否包含環?2 如何找到環的入口節點?3 如何得到環中節點的數目?解決此題 可以設定兩個指標,一快一慢。1.兩個指標乙個fast 乙個slow同時從乙個鍊錶的頭部出發 fast一...

劍指offer23 鍊錶中環的入口節點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。兩個指標,p1,p2 p1一次走一步,p2一次走兩步。第一次相遇之後開始計數,第二次再相遇時count的值就是環有多少個節點。兩個指標,p1,p2 p1先走count步,然後兩個再同時走,相遇的點就是入口節點。struct l...

劍指offer23 鍊錶中環的入口節點

判斷單鏈表中有沒有環,如果有找到環的入口節點。三個問題 1 如何確定鍊錶中包含環 兩個指標,乙個指標一次走一步,乙個指標一次走兩步。如果走得快的指標追上了走得慢的指標,則說明鍊錶包含環 如果走得快的指標走到了鍊錶末尾 p next null 都沒有追上第乙個指標,則無環。2 如何找到環的入口 定義兩...