判斷整數序列是不是二元查詢樹的後序遍歷結果

2021-07-24 21:18:08 字數 787 閱讀 4497

題目:輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。 

例如輸入5、7、6、9、11、10、8,由於這一整數序列是如下樹的後序遍歷結果:

8/  \

6    10

/ \    / \

5   7   9  11

因此返回true。

如果輸入7、4、6、5,沒有哪棵樹的後序遍歷的結果是這個序列,因此返回false。

分析:在後續遍歷得到的序列中,最後乙個元素為樹的根結點。從頭開始掃瞄這個序列,比根結點小的元素都應該位於序列的左半部分;從第乙個大於跟結點開始到跟結點前面的乙個元素為止,所有元素都應該大於跟結點,因為這部分元素對應的是樹的右子樹。根據這樣的劃分,把序列劃分為左右兩部分,我們遞迴地確認序列的左、右兩部分是不是都是二元查詢樹。

#include#include#includeusing namespace std;

bool judge(int a,int start,int end)

} for(j=mid;j<=end;j++)

if(judge(a,0,mid-1) && judge(a,mid,end-1))

return true;

return false;

}int main()

; if(judge(squence,0,6))

cout<<"true";

else

cout<<"false";

return 0;

}

判斷整數序列是不是二元查詢樹的後序遍歷結果

二叉查詢樹 binary search tree 或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹。post order 先訪問左節點,再訪問右節點...

判斷整數序列是不是二元查詢樹的後序遍歷結果

第9題 判斷整數序列是不是二元查詢樹的後序遍歷結果 題目 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 11 因此返回true。如果輸入...

判斷整數序列是不是二元查詢樹的後序遍歷結果

二叉樹 遍歷 一 題目 感謝 提供的題目 判斷整數序列是不是二元查詢樹的後序遍歷結果 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如 輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 1...