劍指offer 二叉搜尋樹的後序遍歷

2022-05-24 17:03:06 字數 1113 閱讀 6069

/**輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。

* 如果是則輸出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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...