判斷整數序列是不是二元查詢樹的後序遍歷結果

2021-05-21 20:12:38 字數 995 閱讀 9859

二叉查詢樹(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,判斷這個序列是否是二元查詢樹的後根遍歷。可以回想一下後序遍歷的性質,先訪問...