剑指offer-二叉搜索树的后序遍历序列
生活随笔
收集整理的這篇文章主要介紹了
剑指offer-二叉搜索树的后序遍历序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:二叉搜索樹的后序遍歷序列
題目描述:輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。
思路:二叉搜索樹首先是有序的,其后序遍歷是“左右根”的順序,根節點總是在后面
如:
6/ \
3 9
/ \ / \
1 5 8 10
期后序遍歷是:153 8109 6
在跟節點已知后我們便可以找到左右子樹的位置,然后判斷當前根節點的右子樹是否都大于根節點,然后對每個左右子樹再進行上面的操作,遞歸進行判斷,直至判斷到最終的葉子節點處
代碼:
1 public class Solution { 2 public boolean VerifySquenceOfBST(int [] sequence) { 3 if(sequence.length==0)return false; 4 return isBST(sequence,0,sequence.length-1); 5 } 6 private boolean isBST(int[]a,int start,int end){ 7 if(start>=end)return true; 8 int right=0; 9 while(a[right]<a[end]){ 10 right++; 11 } 12 for(int j=right;j<end;j++){ 13 if(a[j]<a[end]) return false; 14 } 15 return isBST(a,start,right-1)&&isBST(a,right,end-1); 16 } 17 }?
轉載于:https://www.cnblogs.com/pathjh/p/9173291.html
總結
以上是生活随笔為你收集整理的剑指offer-二叉搜索树的后序遍历序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 忽略文件不起作用
- 下一篇: visjs使用小记-1.创建一个简单的网