判断数组是否为二叉排序树的后序遍历序列


/*二叉搜索树 根节点大于左节点 小于右节点 思路:递归思想 后续遍历的最后一个节点 一定是根节点 从数组开始找到第一个大于根节点的数组元素 从开始到该元素前一个点都为左子树 从该元素 到数组倒数第二个元素 为右子树 如果右子树节点值 小于根节点 返回 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