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

2021-07-11 17:52:05 字數 1090 閱讀 9167

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

題目:輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。

如果是返回true,否則返回false。

例如輸入5、7、6、9、11、10、8,由於這一整數序列是如下樹的後序遍歷結果:

8/ /

6  10

/ / / /

5 7 9 11

因此返回true。

如果輸入7、4、6、5,沒有哪棵樹的後序遍歷的結果是這個序列,因此返回false

#include #define true 1

#define false 0

typedef unsigned int bool;

bool verifysquenceofbst(int squence, int length)

/*右子樹的所有值大於根節點值*/

int j = i;

for(; j < length - 1; ++ j)

/*遞迴驗證分解後的左子樹 5 7 6*/

bool left = true;

if(i > 0)

left = verifysquenceofbst(squence, i);

/*遞迴驗證分解後的右子樹 9 11 10*/

bool right = true;

if(i < length - 1)

right = verifysquenceofbst(squence + i, length - i - 1);/*右子樹排除上個驗證的根節點*/

return (left && right);

}int main(void)

; int b = ;

bool ra = verifysquenceofbst(a, 7);

bool rb = verifysquenceofbst(b, 4);

if(ra)printf("a yes\n"); else printf("a no\n");

if(rb)printf("b yes\n"); else printf("b no\n");

return 0;

}

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

二叉查詢樹 binary search tree 或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹。post order 先訪問左節點,再訪問右節點...

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

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