分析:在後序遍歷得到的序列中,最後乙個數字是樹的根結點的值,陣列中前面的數字可分為兩個部分:第一部分是左子樹結點的值,它們都比根結點的值小,第二部分是右子樹結點的值,它們都比根結點的值大。
**:
#include "stdafx.h"
#include using namespace std;
bool verifysequenceofbst(int nsequence, int nlength)
int nroot = nsequence[nlength - 1];
int nindex = 0;
while (nsequence[nindex] < nroot)//左子樹中結點的值小於根節點的值
for (int i=nindex+1; i0)
bool bright = true;
if ((nindex + 1) < nlength)
return (bleft && bright);
}int _tmain(int argc, _tchar* argv)
;//正確序列,有左右子樹
cout << verifysequenceofbst(narr1, 7) << endl;
int narr2[4] = ;//錯誤序列
cout << verifysequenceofbst(narr2, 4) << endl;
int narr3[3] = ;//右單支
cout << verifysequenceofbst(narr3, 3) << endl;
int narr4[3] = ;//左單支
cout << verifysequenceofbst(narr4, 3) << endl;
int narr5[1] = ;//單個結點
cout << verifysequenceofbst(narr5, 1) << endl;
system("pause");
return 0;
}
面試題24二叉搜尋樹的後序遍歷序列
面試題24 二叉搜尋樹的後序遍歷序列 1.輸入乙個整數的陣列,判斷該陣列是不是某棵二叉搜尋樹的後序遍歷序列。假設輸入的陣列的任意兩個數字互不相同。分析 例如輸入陣列,則返回true,因為這個序列可以找到這樣的一棵二叉搜尋樹滿足條件,而對於序列則找不到這樣的二叉搜尋樹。二叉搜尋樹的性質是,左子樹的節點...
面試題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 ...