二叉查詢樹(binary search tree),或者是一棵空樹,或者是具有下列性質的二叉樹:
若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;
若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;
它的左、右子樹也分別為二叉排序樹。
post order: 先訪問左節點, 再訪問右節點,最後訪問根節點。
分析:這是一道trilogy的筆試題,主要考查對二元查詢樹的理解。
在後續遍歷得到的序列中,最後乙個元素為樹的根結點。從頭開始掃瞄這個序列,比根結點小的元素都應該位於序列的左半部分;從第乙個大於跟結點開始到跟結點前面的乙個元素為止,所有元素都應該大於跟結點,因為這部分元素對應的是樹的右子樹。根據這樣的劃分,把序列劃分為左右兩部分,我們遞迴地確認序列的左、右兩部分是不是都是二元查詢樹。
//#include "stdafx.h"
#include bool ispostorderofbst(int iarray, int size)
if(!(ispostorderofbst(iarray, middle))) return false;
if(!(ispostorderofbst(iarray + middle, size-1-middle))) return false;
return true;
}int _tmain(int argc, _tchar* argv)
; // ?1 init of array in c++
int iarrayfalse[4] = ;
std::cout << ispostorderofbst(iarraytrue, 7) << std::endl;
std::cout << ispostorderofbst(iarrayfalse, 4) << std::endl;
return 0;
}
判斷整數序列是不是二元查詢樹的後序遍歷結果
第9題 判斷整數序列是不是二元查詢樹的後序遍歷結果 題目 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 11 因此返回true。如果輸入...
判斷整數序列是不是二元查詢樹的後序遍歷結果
二叉樹 遍歷 一 題目 感謝 提供的題目 判斷整數序列是不是二元查詢樹的後序遍歷結果 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如 輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 1...
判斷整數序列是不是二元查詢樹的後序遍歷結果
二元查詢樹的定義為 1 若左子樹不空,則左子樹上所有節點的值均小於其根節點的值。2 若右子樹不空,則右子樹上所有節點的值均小於其跟節點的值 3 其左右子樹也均為二叉查詢樹。那麼先給定乙個數字序列5 7 6 9 11 10 8,判斷這個序列是否是二元查詢樹的後根遍歷。可以回想一下後序遍歷的性質,先訪問...