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

2021-06-16 21:52:23 字數 1096 閱讀 9876

分析:在後序遍歷得到的序列中,最後乙個數字是樹的根結點的值,陣列中前面的數字可分為兩個部分:第一部分是左子樹結點的值,它們都比根結點的值小,第二部分是右子樹結點的值,它們都比根結點的值大。

**:

#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 ...