輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
例如:5,7,6,9,11,10,8
class
solution
bool
verifysquenceofbstrecursively
(vector<
int> sequence,
int indexofstart,
int indexofend)
int j = i;
for(
; j <= indexofend-
1; j++
)int lengthofleft = i - indexofstart;
int lengthofright = indexofend - i;
bool left =
false
;bool right =
false;if
(lengthofleft ==0)
left =
true
;else
left =
verifysquenceofbstrecursively
(sequence, indexofstart, i-1)
;if(lengthofright ==0)
right =
true
;else
right =
verifysquenceofbstrecursively
(sequence, i, indexofend-1)
;return left && right;}}
;
這道題卡了蠻久,debug找錯用了蠻久,下面給出的是錯誤**,顯示記憶體超限制。
class
solution
bool
verifysquenceofbstrecursively
(vector<
int> sequence,
int indexofstart,
int indexofend)
int j = i;
for(
; j <= indexofend-
1; j++
)int lengthofleft = i - indexofstart;
int lengthofright = indexofend - i;
bool left =
false
;bool right =
false;if
(lengthofleft ==0)
left =
true
;else
left =
verifysquenceofbstrecursively
(sequence, indexofstart, indexofend+lengthofleft-1)
;// 出錯
if(lengthofright ==0)
right =
true
;else
right =
verifysquenceofbstrecursively
(sequence, i, i+lengthofright-1)
;return left && right;}}
;
注釋處,indexofend
應該為indexofstart
。找了好久錯誤,最後發現是個低階錯誤,真是不應該! 33 二叉搜尋樹的後序遍歷
二叉搜尋樹 任意節點,左子樹所有的節點比根節點小,右子樹的所有節點比根節點大。題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 1。後序遍歷,先找到根節點,最後乙個數 2.判斷第乙個數是否小於根節點,...
33 二叉搜尋樹的後序遍歷序列
擴充套件題 leetcode 1008.前序遍歷構造二叉搜尋樹 舉一反三 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。5 2 6 13示例 1 輸入 1,6,3,2,5 輸出 false 示例 2 輸...
二叉搜尋樹的後序遍歷
二叉搜尋樹的後序遍歷序列中,最後乙個值是根結點,前面比根節點小的是左結點,後面比根結點大的是右結點。include include bool verifysquenceofbst int sequence,int length int root sequence length 1 int i 0 在...