006重建二叉树

  第六题要求根据所给的前序和中序遍历结果重新构建二叉树,答案里给的虽然也是递归方式,但是我没有看懂,于是自己写了一个,试了几个案例通过了,目前没发现问题。但是这里需要有一个全局变量index,用来确定当前处理的是前序数组中的哪个数,由于java不能使用指针,因此只能通过下标来确定起始位置。代码中的n1是前序数组,n2是中序数组,left是需要搜索的中序数组的起始位置,right是需要搜索的中序数组的结束位置。

    public BinaryNode createBinaryNode(int[] n1, int[] n2, int left, int right) {
        if (index < 0 || index >= n1.length || left > right) {
            return null;
        }
        BinaryNode root = new BinaryNode();
        int currentVal = n1[index];
        index++;
        root.value = currentVal;
        root.left = null;
        root.right = null;
        for (int i = left; i <= right; i++) {
            if (currentVal == n2[i]) {
                root.left = createBinaryNode(n1, n2, left, i - 1);
                root.right = createBinaryNode(n1, n2, i + 1, right);
            }
        }
        return root;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值