分析:在後序遍歷得到的序列中,最後乙個數字是樹的根結點的值,陣列中前面的數字可分為兩個部分:第一部分是左子樹結點的值,它們都比根結點的值小,第二部分是右子樹結點的值,它們都比根結點的值大。
**:
[cpp]view plain
copy
#include "stdafx.h"
#include
using
namespace
std;
bool
verifysequenceofbst(
intnsequence,
intnlength)
intnroot = nsequence[nlength - 1];
intnindex = 0;
while
(nsequence[nindex]
//左子樹中結點的值小於根節點的值
for(int
i=nindex+1; i//右子樹中結點的值大於根節點的值
} bool
bleft =
true
; if
(nindex > 0)
bool
bright =
true
; if
((nindex + 1)
return
(bleft && bright);
} int
_tmain(
intargc, _tchar* argv)
;//正確序列,有左右子樹
cout <
intnarr2[4] = ;
//錯誤序列
cout <
intnarr3[3] = ;
//右單支
cout <
intnarr4[3] = ;
//左單支
cout <
intnarr5[1] = ;
//單個結點
cout <
system("pause"
);
return
0;
}
二叉搜尋樹面試題總結
0.什麼是二叉搜尋樹 二叉搜尋樹就是左子樹所有結點都小於根結點,右子樹所有結點都打於根節點。當然這個定義遞迴的,它的左右子樹也滿足這個特點 例如 0.定義結構typedef int bstdatatype 定義二叉搜尋樹結點型別 typedef struct bstreenode bstreenod...
面試題24 二叉搜尋樹與雙向鍊錶
分析 1.二叉樹中,每個結點都有兩個指向子結點的指標。2.在雙向鍊錶中,每個結點也有兩個指標,分別指向前乙個結點和後乙個結點 3.二叉搜尋樹中,左子結點的值總是小於父結點的值,右子結點的值總是大於父結點的值。4.將二叉搜尋樹轉換為雙向鍊錶時,原先指向左子結點的指標調整為鍊錶中指向前乙個結點的指標,原...
面試題24二叉搜尋樹的後序遍歷序列
面試題24 二叉搜尋樹的後序遍歷序列 1.輸入乙個整數的陣列,判斷該陣列是不是某棵二叉搜尋樹的後序遍歷序列。假設輸入的陣列的任意兩個數字互不相同。分析 例如輸入陣列,則返回true,因為這個序列可以找到這樣的一棵二叉搜尋樹滿足條件,而對於序列則找不到這樣的二叉搜尋樹。二叉搜尋樹的性質是,左子樹的節點...