2021-09-06两序列生成一序列

public static BTNode preinOrder(int[] pre,int[] in,int prelow,int prehigh,int inlow,int inhigh){//前序和中序

    if((prehigh-prelow>=0)&&(inhigh-inlow>=0)){
        BTNode n=new BTNode(pre[prelow]);
        int k=inlow;
        for(int i=inlow;i<=inhigh;i++){
            if(pre[prelow]==in[i]){
                k=i-inlow;
                break;
            }
        }
        n.setLeft(preinOrder(pre,in,prelow+1,prelow+k,inlow,inlow+k-1));
        n.setRight(preinOrder(pre, in, prelow+k+1, prehigh, inlow+k+1, inhigh));
        return n;
    }
    else
        return null;
}

public static BTNode inpostOrder(int[] a,int[] b,int inlow,int inhigh,int postlow,int posthigh){//中序a和后序b
    if((posthigh-postlow>=0)&&(inhigh-inlow>=0)) {
        BTNode btNode = new BTNode(b[posthigh]);
        int k=0;
        for(int i=inlow;i<=inhigh;i++){
            if(a[i]==b[posthigh]){
                k=i-inlow;//距离inlow的距离
                break;
            }
        }
        btNode.setLeft(inpostOrder(a, b, inlow , inlow+k-1, postlow, k +postlow-1));
        btNode.setRight(inpostOrder(a, b,  inlow+k+1, inhigh, k +postlow, posthigh-1));
        return btNode;
    }
    else return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值