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

2022-09-08 10:09:09 字數 1894 閱讀 6303

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

因此返回true。

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

由於二叉查詢樹的特性(左子樹的值小於根節點,右子樹的值大於根節點),結合後序序列,可以找到一顆二叉查詢樹。有點類似於快速排序,對子樹進行遞迴判斷。

**

package test009;

/** * created by cq on 2015/4/3.

* 第9題:輸入乙個整數陣列,判斷該二叉樹是不是某二元查詢樹的後序遍歷的結果。如果是返回true;否則返回false。

*/public

class

test009

return childrecursion(arr,0,arr.length-1);

}public

static

boolean

childrecursion(int arr, int left, int right)

int mid = 0;

boolean leftchildend = false;

for (int i = left ; i//從左到右,遇到第乙個比根節點值大的節點,即認為到達左子樹邊界(右子樹起點)

if (!leftchildend && arr[i] > arr[right])

//若在右子樹中存在值比根節點小的節點,直接判定為false

else

if (leftchildend && arr[i] < arr[right])

}return childrecursion(arr,left,mid-1) && childrecursion(arr,mid,right-1);

}public

static

void

printarray(int arr)

}public

static

void

main(string args);

test009.printarray(arr);

system.out.println("是乙個二叉查詢樹的後序序列:"+test009.existcorrespondbstree(arr)+"\n");

int arr2 = ;

test009.printarray(arr2);

system.out.println("是乙個二叉查詢樹的後序序列:"+test009.existcorrespondbstree(arr2)+"\n");

int arr3 = ;

test009.printarray(arr3);

system.out.println("是乙個二叉查詢樹的後序序列:"+test009.existcorrespondbstree(arr3));}}

執行結果

connected to

the target vm, address: '127.0.0.1:2715', transport: 'socket'

disconnected from

the target vm, address: '127.0.0.1:2715', transport: 'socket'57

691110 是乙個二叉查詢樹的後序序列:true74

65 是乙個二叉查詢樹的後序序列:false711

1620

5251

5018 是乙個二叉查詢樹的後序序列:true

process finished with exit code 0

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

題目部落格 題目 題目 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 11 因此返回true。如果輸入7 4 6 5,沒有哪棵樹的後序遍...

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

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

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

第9題 判斷整數序列是不是二元查詢樹的後序遍歷結果 題目 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 11 因此返回true。如果輸入...