標籤:二叉搜尋樹 後序遍曆
分析:
代碼:
package Tree;public class VerifyBST { //第一個元素下標low,最後一個元素下標high public static boolean verifySequenceBST(int[] sequence,int low,int high){ if(sequence == null || high-low <0){ return false; } int root = sequence[high]; int i; //在二叉搜尋樹左子數的結點小於根結點 for(i=low;i<high;i++){ //如果值大於根結點,停止,說明這個下標開始為右子樹 if(sequence[i]>root){ break; } } //i=3 //在二叉搜尋樹右子數的結點大於根結點 for (int j=i; j < high; j++) { if (sequence[j]<root) { return false; } } //判斷左子樹是不是二叉搜尋數 boolean left = true; if(i>0){ left = verifySequenceBST(sequence,0,i-1); } //判斷右子樹是不是二叉搜尋數 boolean right = true; if(i<high){ right = verifySequenceBST(sequence,i+1,high); } return (left&&right); } public static void main(String[] args) { int[] arr = {5,7,6,9,11,10,8}; boolean flag =verifySequenceBST(arr, 0, arr.length-1); System.out.println(flag); int[] arr1 = {7,4,6,5}; boolean flag1 = verifySequenceBST(arr1, 0, arr1.length-1); System.out.println(flag1); }}
運行結果:
truefalse
判斷一個數組是否是二叉搜尋樹的後序遍曆(java)