/**輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。* 如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
* 一開始不是很明白題目意思,以為是讓我後序遍歷某棵二叉樹
* 後來搞明白了。
* 二叉搜尋樹就像是二分查詢裡面的,左子樹的所有元素都小於根節點,右子樹的所有元素都大於根節點。
*例如,8是根節點,則我們可以從頭開始找比8大的節點,就可以找到左右子樹的分界了
*這時我們找到了9,然後我們在驗證左子樹(5,7,6)是否都小於根節點8,驗證右子樹(9,11,10)是否都大於根節點8.
*然後又繼續驗證左子樹和右子樹內部是否符合,於是可以用到遞迴。
*例如,6是根節點,我們可以發現這棵樹沒有左子樹,於是我們驗證(7,4,5)是否都大於根節點6
*但是此時我們發現4並不大於根節點,說明不符合。
*測試用例:
*1.功能測試:左右子樹都有的:,只有右子樹的,只有左子樹的
*2.邊界測試:給定陣列為空或者長度為0的。
* @author admin
* */
public class verifysequenceofabst
return verifysequence(0,sequence.length-2,sequence[sequence.length-1],sequence);
}public static boolean verifysequence(int start,int end,int root,int sequence)
}boolean left=true;
//驗證左子樹是否都小於根
for(int j=start;j<=i-1&&left;j++)
}boolean right=true;
//驗證右子樹是否都大於根
for(int j=i;j<=end&&right;j++)
if(ireturn left&&right;
} public static void main(string args) ;
system.out.println(verifysquenceofbst(sequence));
} }
劍指Offer 二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...
劍指offer 二叉搜尋樹的後序遍歷
時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...
劍指offer 二叉搜尋樹的後序遍歷
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。簡單思路 二叉搜尋樹 1.左孩子 根 右孩子 2.bst的左孩子和右孩子都是bst 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...