判斷數組是否為二叉排序樹的后序遍歷序列


/*二叉搜索樹 根節點大於左節點 小於右節點 思路:遞歸思想 后續遍歷的最后一個節點 一定是根節點 從數組開始找到第一個大於根節點的數組元素 從開始到該元素前一個點都為左子樹 從該元素 到數組倒數第二個元素 為右子樹 如果右子樹節點值 小於根節點 返回 false 最后分別在左右子樹遞歸 直到數組中只有一個元素 返回true */
public class Solution { boolean flag=false; public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0) return false; return subtest(sequence,0,sequence.length); } public boolean subtest(int[]subsequence,int start,int end){ if(start>=end)return true; int i=start; for(;i<end;i++){ //該循環 尋找左子樹的分界點
            if(subsequence[i]>subsequence[end-1]) break; } for(int j=i;j<end;j++){//遍歷右子樹 出現節點值小於根節點返回false
            if(subsequence[j]<subsequence[end-1]) return false; } return subtest(subsequence,start,i-1) && subtest(subsequence,i,end-1); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM