面試題24二叉搜尋樹的後序遍歷序列

2021-08-01 21:31:08 字數 608 閱讀 1047

面試題24:二叉搜尋樹的後序遍歷序列

1.輸入乙個整數的陣列,判斷該陣列是不是某棵二叉搜尋樹的後序遍歷序列。假設輸入的陣列的任意兩個數字互不相同。

分析:例如輸入陣列,則返回true,因為這個序列可以找到這樣的一棵二叉搜尋樹滿足條件,而對於序列則找不到這樣的二叉搜尋樹。

二叉搜尋樹的性質是,左子樹的節點的值比根節點的值大,根節點的值小於右子樹的節點的值。從後序遍歷的結果來看,序列中最後乙個節點應該是根節點,序列中比根節點小的值是左子樹的節點,大的值是右子樹的節點。然後下一步 就是對左右子樹用同樣的方法。

#includeusing namespace std;

bool verifysquenceofbst(int a,int length)

//右子樹大於根節點

int j=i;

for(;j0)

left=verifysquenceofbst(a,i);

//判斷右子樹

int right=true;

if(j

面試題24 二叉搜尋樹的後序遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷.示例 includeusing namespace std bool verifysquenceofbst int sequence,int length 在二叉搜尋樹中右子樹的結點大於根結點 int j i for j length ...

面試題24 二叉搜尋樹的後序遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。假設輸入的陣列的任意兩個數字都互不相同。1 bool ispostorder vector num,int left,int right 211 判斷右子樹中的所有元素是否都大於根元素 12for int j i j right ...

面試題24 二叉搜尋樹的後序遍歷序列

題目 給定乙個整數陣列,判斷該陣列是不是某二叉搜尋的後續遍歷序列。假設輸入的陣列的任意兩個數字都互不相同。分析 對於某種訪問序列的verify的問題,一般先找到根節點,然後根據題目資訊找出左子樹與右子樹。然後根據當前資訊判斷當前根節點的合法性,然後遞迴判斷左子樹和右子樹的合法性。bool varif...