后序遍历数组的正确性判断,稍微费了些精力,主要是没想起来后序遍历数组特点。。。迷。

二叉搜索树的后序遍历序列

http://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence==null||sequence.length==0){
            return false;
        }
        //即使输入的数组,也可以利用二叉树的后序遍历递归模式;
        //因为是后序遍历,所以要熟悉它的特点是最后一个元素是根节点;
        //接下来寻找根节点左右侧元素是否满足大小要求;
        return helpVerify(sequence,0,sequence.length-1);
    }
    public boolean helpVerify(int[] sq,int start,int root){
        if(start>=root)return true;
        int rootVal=sq[root];
        int i=start;
        int mid=start;
        for(i=start;i<root&&sq[i]<rootVal;i++);
        if(i<root){
            mid=i; 
        }
                //这里的条件判断注意一些,i==root的判断!!!!!!!!!
        if(i==root){
            return true;
        }
        for(i=mid;i<root&&sq[i]>rootVal;i++);
        if(i<root){
            return false;
        }
        boolean left=helpVerify(sq,start,mid-1);
        boolean right=helpVerify(sq,mid,root-1);
        
        return left&&right;
    }
}

全部评论

相关推荐

10-31 20:07
门头沟学院 Java
点赞 评论 收藏
分享
孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务