剑指offer-二叉搜索树的后序遍历序列
生活随笔
收集整理的這篇文章主要介紹了
剑指offer-二叉搜索树的后序遍历序列
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目:二叉搜索樹的后序遍歷序列
題目描述:輸入一個(gè)整數(shù)數(shù)組,判斷該數(shù)組是不是某二叉搜索樹的后序遍歷的結(jié)果。如果是則輸出Yes,否則輸出No。假設(shè)輸入的數(shù)組的任意兩個(gè)數(shù)字都互不相同。
思路:二叉搜索樹首先是有序的,其后序遍歷是“左右根”的順序,根節(jié)點(diǎn)總是在后面
如:
6/ \
3 9
/ \ / \
1 5 8 10
期后序遍歷是:153 8109 6
在跟節(jié)點(diǎn)已知后我們便可以找到左右子樹的位置,然后判斷當(dāng)前根節(jié)點(diǎn)的右子樹是否都大于根節(jié)點(diǎn),然后對每個(gè)左右子樹再進(jìn)行上面的操作,遞歸進(jìn)行判斷,直至判斷到最終的葉子節(jié)點(diǎn)處
代碼:
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 }?
轉(zhuǎn)載于:https://www.cnblogs.com/pathjh/p/9173291.html
總結(jié)
以上是生活随笔為你收集整理的剑指offer-二叉搜索树的后序遍历序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 忽略文件不起作用
- 下一篇: visjs使用小记-1.创建一个简单的网