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