题解 | #重建二叉树#

重建二叉树

https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

方法一:递归

递归思想:

  1. 已知前序遍历,可以找到二叉树根结点
  2. 已知根结点和中序遍历,可以找到左右子树
  3. 子树根据前序、中序遍历又找到根结点和左右子树
  • Arrays.copyOfRange(T[] original, int from, int to) 方法
    复制指定的数组到一个新的数组。
  • 参数说明:
    其中T[] original是要复制的数组,from是复制开始位置的元素的序号(包括这个元素),to复制结束位置的序号(不包括这个元素)【使用时可能参数错误导致的异常】
public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {
        if(pre.length==0)return null;
        TreeNode root = new TreeNode(pre[0]);
        int i = 0;
        while(vin[i]!=root.val){
            i++;
        }
        //递归传参排除根结点
        //用同样的找根结点的办法,递归处理root的左右子树
        root.left=reConstructBinaryTree(Arrays.copyOfRange(pre,1,i+1),
                                        Arrays.copyOfRange(vin,0,i));
        root.right=reConstructBinaryTree(Arrays.copyOfRange(pre,i+1,pre.length),
                                         Arrays.copyOfRange(vin,i+1,vin.length));
        re
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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