剑指Offer P62 面试题7:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

public class Solution
{public TreeNode reConstructBinaryTree(int [] pre,int [] in) {if (pre == null || in == null || pre.length == 0 || in.length == 0)return null;TreeNode root = new TreeNode(pre[0]);for (int location = 0; location < in.length; location++){if (pre[0] == in[location]){// 左子树int[] leftPre = new int[location];int[] leftIn = new int[location];for (int i = 0; i < location; i++){leftPre[i] = pre[i + 1];leftIn[i] = in[i];}root.left = reConstructBinaryTree(leftPre, leftIn);                    // 右子树int[] rightPre = new int[in.length - 1 - location];int[] rightIn = new int[in.length - 1 - location];for (int i = 0; i < in.length - 1 - location; i++){rightPre[i] = pre[location + 1 + i];rightIn[i] = in[location + 1 + i];}root.right = reConstructBinaryTree(rightPre, rightIn);                    }}return root;}
}

递归调用的时候一定要写

root.left  = 
root.right = 

如果允许导入相关包的话,就不用建立新数组了

root.left = reConstructBinaryTree(Arrays.copyOfRange(pre, 1, location+1), Arrays.copyOfRange(in, 0, location));
root.right = reConstructBinaryTree(Arrays.copyOfRange(pre, location+1, pre.length), Arrays.copyOfRange(in, location+1, in.length));

2018.7.8学习笔记相关推荐

  1. 2018/8/05--OpenGL学习笔记(七)Light Caster/Multiple Light

    开篇的话:接着赶笔记,这篇写完正好回学校开始学习新的内容了. 投光物 将光投射(Cast)到物体的光源叫做投光物(Light Caster). 平行光(Directional Light) (我们通常 ...

  2. 【2018.05.04学习笔记】【linux基础知识10.1-10.5】

    2019独角兽企业重金招聘Python工程师标准>>> 10.1 使用w查看系统负载 w命令:查看cpu负载情况 [root@lgs-01 ~]# w11:20:20 up 1 mi ...

  3. 【2018.05.07学习笔记】【linux基础知识10.6-10.10】

    2019独角兽企业重金招聘Python工程师标准>>> 10.6 监控io性能 iostat命令:监控磁盘详细io信息.安装sysstat包得到. 当你用vmstat命令查看,b列或 ...

  4. linux高级的脚本,【2018.07.23学习笔记】【linux高级知识 Shell脚本编程练习】

    1.编写shell脚本,计算1-100的和: #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum 2.编写s ...

  5. 【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

    2019独角兽企业重金招聘Python工程师标准>>> 14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本 ...

  6. 【2018.04.24学习笔记】【linux基础知识8.10-8.13】

    2019独角兽企业重金招聘Python工程师标准>>> 8.10 shell特殊符号cut命令 shell中的特殊符号: 1.* 代表任意n个字符,包括0个 2.? 代表任意单个字符 ...

  7. 2018.1.5学习笔记

    今天早上来的时候老师就给我们扔了一个线段树分治的课件告诉我们自己研究,,,然后发现网上资料少得可怜完全不知道所谓的线段树分治是什么,,,研究了一天结果并没有什么结果,,,例题也完全看不懂最后搞了一天, ...

  8. 2018.7.18学习笔记

    burp实现弱密码破解 1.先打开你的burpsuit,浏览器设置为代理服务器(代理:127.0.0.1,端口:8080) 2.在网上随意找到一个网站,随意输入账号和密码,点击登录 3.burp抓包成 ...

  9. 识别和追踪主题层次的影响力者(来自2018 Machine Learning 论文学习笔记)

    本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com . 以下内容是个人的论文阅读笔记,内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 文章目录 论文来源 论 ...

最新文章

  1. HDU 4738 Caocao‘s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)
  2. GridView的Command命令集合
  3. C语言常用的字符串函数
  4. setwindowpos怎么改变z序_小学教材读音又改了,说服读成shuō fú,确凿改成què záo...
  5. 《C++ Primer 5th》笔记(11 / 19):关联容器
  6. 容器编排技术 -- Kubernetes kubectl create clusterrole 命令详解
  7. 商汤科技大涨逾15% 市值突破2000亿港元
  8. 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】(ZZ伯乐在线)...
  9. [C/C++]_[0基础]_[static_cast,reinterpret_cast,dynimic_cast的使用场景和差别]
  10. Docker Kubernetes k8s 从入门到精通 阿里云实战命令
  11. 信息提取(Information Extraction)
  12. 人人车创始人李健的创业之路
  13. Arduino - 输出引脚扩流
  14. linux centos用smartctl 打开硬盘写缓存
  15. 图像分割(六) —— STransFuse
  16. subplots用法总结
  17. linux 视频电话,多人音视频通话-Linux开发集成-SDK开发集成-音视频通话-网易云信开发文档...
  18. 1-9原始意义是什么?
  19. 从开发者的角度剖析微信小程序
  20. 五位大神级人物带你多角度看懂程序化交易

热门文章

  1. ERROR 1840 (HY000) @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empt
  2. js获取指定字符串长度
  3. javascript 常用的字符串函数
  4. python datatime简单计算工龄
  5. wsl2中安装海思开发环境(3516EV200/18EV300)
  6. 玩儿《阴阳师》的体验
  7. 表格表头php,Excel表格表头怎么设置每页都有?
  8. Echarts饼图之数据展示
  9. PyCharm添加Anaconda中的虚拟环境,Python解释器出现Conda executable is not found
  10. 搭建syslog服务器