力扣重建二叉树

class Solution {

    int n;

    public TreeNode buildTree(int[] preorder, int[] inorder) {

   n = preorder.length;

   if(n == 0){

       return null;

   }

  return dfs(preorder,inorder,0,n - 1,0,n - 1);

    }

    TreeNode dfs(int[] pre,int[] ino,int l,int r,int a,int b){

        if(l == r){

            TreeNode node = new TreeNode(pre[l]);

            return node;

        }

        if(l > r){

            return null;

        }

      TreeNode root = new TreeNode(pre[l]);

      int index = 0;

      for(int i = a;i <= b;i++){

          if(ino[i] == pre[l]){

              index = i - a;

              break;

          }

      }

      root.left = dfs(pre,ino,l + 1,l + 1 + index - 1,a,a + index - 1);

      root.right = dfs(pre,ino,l + 1 + index,r,a + index + 1,b);

      return root;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值