题解 | #重建二叉树#

重建二叉树

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
全部评论

相关推荐

一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
今年读完研的我无房无车无对象,月入还没有过万 看到他在朋友圈晒房产证,感叹自己白读了这么多年书
梦想是成为七海千秋:那咋了,双9毕业的现在还没存款呢(因为没念完),高中毕业的去直播带货月入几百万也是完全有可能的,退一万步讲,有些人刚出生父母就给买车买房了,上哪说理去,哪怕是同一个起点也会有截然不同的走向,过好自己的生活就完事了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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