樹五:二叉搜尋樹的後序遍歷序列
阿新 • • 發佈:2018-11-16
/**
* 題目:二叉搜尋樹的後序遍歷序列
* 描述:輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同
* 二叉搜尋樹,又叫二叉排序樹,它或者是一顆空樹,或者具有以下性質:
* 若他的左子樹都不為空,則左子樹上所有結點的值均小於他根結點的值,
* 若他的右子樹都不為空,則左子樹上所有結點的值均大於他根結點的值,
* 且左右子樹都是後續遍歷序列
* 擷取陣列一部分用Arrays.copyOfRange(sequeue,o,i);
* 方案:判斷其輸入的陣列是否滿足其性質即可
* */
public class Five { public static boolean one(int[] sequeue) { if(sequeue == null || sequeue.length == 0) { return false; } int root = sequeue[sequeue.length-1]; int i =0; for(;i<sequeue.length-1;i++) { //判斷左子樹 if(sequeue[i] >root) {break; } } int j =i; for(;j<sequeue.length-1;i++) { //判斷右子樹 if(sequeue[j] <root) { return false; } } boolean left = true; if(i>0) { left = one(Arrays.copyOfRange(sequeue, 0, i)); }boolean right = true; if(j < sequeue.length-1) { right = one(Arrays.copyOfRange(sequeue, j, sequeue.length-1)); } return left && right; } }