判斷該陣列是不是某二元查詢樹的後序遍歷的結果

2021-06-14 23:26:43 字數 922 閱讀 9622

題目:輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。 例如輸入5、7、6、9、11、10、8,由於這一整數序列是如下樹的後序遍歷結果:           8         /   \        6     10      / \     / \     5    7    9   11 因此返回true。 如果輸入7、4、6、5,沒有哪棵樹的後序遍歷的結果是這個序列,因此返回false。 分析:這是一道trilogy的筆試題,主要考查對二元查詢樹的理解。 在後續遍歷得到的序列中,最後乙個元素為樹的根結點。從頭開始掃瞄這個序列,比根結點小的元素都應該位於序列的左半部分;從第乙個大於跟結點開始到跟結點前面的乙個元素為止,所有元素都應該大於跟結點,因為這部分元素對應的是樹的右子樹。根據這樣的劃分,把序列劃分為左右兩部分,我們遞迴地確認序列的左、右兩部分是不是都是二元查詢樹。

/*

* main.c

* * created on: 2013-5-14

* author: robot

*/#include #include #include int posttree(int * array, int start, int end)

middle = i - 1;

while (i < end)

} if ( posttree(array, start, middle) == 1)

return posttree(array, middle + 1, end - 1);

else

return 0;

}int main()

; int result = posttree(array, 0, 6);

printf(" %d ", result);

return 0;

}

判斷該陣列是不是某二元查詢樹的後序遍歷的結果

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

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

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

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

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