天天看點

[程式員面試題精選100題]6.二叉查找樹的後序周遊結果

輸入一個整數數組,判斷該數組是不是某二叉查找樹的後序周遊的結果。如果是傳回true,否則傳回false。

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

          8

        /    \

      6    10

     /   \   /   \

   5    7 9 11

是以傳回true。

如果輸入7、4、6、5,沒有哪棵樹的後序周遊的結果是這個序列,是以傳回false。

這是一道trilogy的筆試題,主要考查對二叉查找樹的了解。

在後續周遊得到的序列中,最後一個元素為樹的根結點。從頭開始掃描這個序列,比根結點小的元素都應該位于序列的左半部分;

從第一個大于跟結點開始到跟結點前面的一個元素為止,所有元素都應該大于跟結點,因為這部分元素對應的是樹的右子樹。

根據這樣的劃分,把序列劃分為左右兩部分,我們遞歸地确認序列的左、右兩部分是不是都是二叉查找樹。

繼續閱讀