判断二叉排序树的后序遍历序列
1、确定root;
2、遍历序列(除去root结点),找到第一个大于root的位置,则该位置左边为左子树,右边为右子树;
3、遍历右子树,若发现有小于root的值,则直接返回false;
4、分别判断左子树和右子树是否仍是二叉搜索树(即递归步骤1、2、3)。
public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length == 0){ return false; } if(sequence.length == 1){ return true; } return judge(sequence,0,sequence.length-1); } public boolean judge(int[] a,int start,int end){ if(start>=end) return true; int root=a[end]; int i=start; while(a[i]<root) { i++; } for(int j=i;j<end;j++) { if(a[j]<root) return false; } return judge(a,start,i-1)&&judge(a,i,end-1); }
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/11211482.html

浙公网安备 33010602011771号