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

2021-10-02 07:34:54 字數 975 閱讀 9254

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。

二叉搜尋樹的後序遍歷序列的最後乙個元素是根節點,前面小於根節點的部分是左子樹,大於根節點的部分是右子樹。遞迴地找出序列中的左子樹序列,右子樹序列,如果右子樹序列比根節點小則返回false。

class

solution

int root_index = postorder.

size()

-1;int index;

for(index =

0;index < postorder.

size()

;++index)

}for

(int i = index;i < postorder.

size()

;++i)

} vector<

int>

leftvec

(postorder.

begin()

, postorder.

begin()

+ index)

; vector<

int>

rightvec

(postorder.

begin()

+ index, postorder.

end()-

1);bool left =

verifypostorder

(leftvec)

;bool right =

verifypostorder

(rightvec)

;return left & right;}}

;

時間複雜度:最壞情況是o(n

2)

o(n^2)

o(n2

)空間複雜度:o(1

)o(1)

o(1)

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

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是返回true,否則返回false。假設輸入的陣列的任意兩個數字都不相同。解答 二叉搜尋樹後序遍歷最後訪問的是根節點,根據根節點將陣列分成兩部分,前面一部分即左子樹值小於根節點值,後面一部分即右子樹的值大於根節點 再遞迴的檢查...

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

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。include using namespace std bool verifysquenceofbst int sequence,int length int j...

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

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。class solution 在二叉搜尋樹中右子樹的結點大於根結點 int j i for j0 left verifysquenceofbst lefttree...