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