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

2022-05-02 18:45:13 字數 706 閱讀 6093

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

分析:在後序遍歷中,最後乙個數字是樹的根節點的值。陣列中前面的數字可以分為兩個部分,第乙個部分是左子樹節點的值,他們都比根節點的值小;第二個部分是右子樹節點的值,他們都比根節點的值大。因此從頭遍歷整個陣列,當遇到乙個大於根節點的數時,將前面的都劃為左子樹,繼續遍歷,如果後面有乙個小於根節點的值,則不是後序遍歷陣列;如果後面的所有數都小於根節點的值,則繼續遞迴遍歷下去,**如下(是根據在牛客網上給的函式原型寫的):

1

bool verifysquenceofbst(vectorsequence) 67

bool judge(vector sequence,int l,int

r)13

for(j=i;j)

17bool leftjudge = true;18

bool rightjudge = true;19

if(i>0

)20 leftjudge = judge(sequence,0,i-2

);21

if(i22 rightjudge = judge(sequence,i-1,r-1

);23

return leftjudge&&rightjudge;

24 }

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

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