二叉搜尋樹後序遍歷序列合法性判斷

2021-09-25 15:48:18 字數 867 閱讀 9756

鏈結:二叉搜尋樹後序遍歷序列合法性判斷

題目詳情

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

分析

//非遞迴

//非遞迴也是乙個基於遞迴的思想:

//左子樹一定比右子樹小,因此去掉根後,數字分為left,right兩部分,right部分的

//最後乙個數字是右子樹的根他也比左子樹所有值大,因此我們可以每次只看有子樹是否符合條件

//即可,即使到達了左子樹左子樹也可以看出由左右子樹組成的樹還想右子樹那樣處理

//對於左子樹回到了原問題,對於右子樹,左子樹的所有值都比右子樹的根小可以暫時把他看出右子樹的左子樹

//只需看看右子樹的右子樹是否符合要求即可

由於規模都是一次-1,每次都要掃全域性,複雜度o(n

2)

o(n^2)

o(n2)

code

class

solution

bool

nonrecursive

(vector<

int> sequence)

return

true;}

bool

dfs(

int l,

int r, vector<

int> sequence)

};

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

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