ATO 33 二叉搜尋樹的後序遍歷序列

2021-09-29 20:29:10 字數 1812 閱讀 9717

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出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 在...