【LeetCode】剑指 Offer 07. 重建二叉树

文章目录

  • 【LeetCode】剑指 Offer 07. 重建二叉树

package offer;import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.HashMap;public class Solution07 {public static void main(String[] args) {int[] preorder = {3,9,20,15,7};int[] inorder = {9,3,15,20,7};Solution07 solution = new Solution07();System.out.println(solution.levelOrder(solution.method(preorder, inorder)));}int[] preorder;HashMap<Integer, Integer> dic = new HashMap<>();private TreeNode method(int[] preorder, int[] inorder){this.preorder = preorder;for(int i = 0; i < inorder.length; i++)dic.put(inorder[i], i);return recur(0, 0, inorder.length - 1);}private TreeNode recur(int root, int left, int right){if(left > right) return null;TreeNode node = new TreeNode(preorder[root]);int i = dic.get(preorder[root]);node.left = recur(root + 1, left, i - 1);node.right = recur(root + i - left + 1, i + 1, right);return node;}private ArrayList<Integer> levelOrder(TreeNode root){ArrayList<Integer> res = new ArrayList<>();ArrayDeque<TreeNode> queue = new ArrayDeque<>();TreeNode temp = new TreeNode();queue.add(root);while(!queue.isEmpty()){temp = queue.poll();res.add(temp.val);if(temp.left != null) queue.add(temp.left);if(temp.right != null) queue.add(temp.right);}return res;}
}class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){};TreeNode(int x){val = x;}
}//时间复杂度为 O(n),n 为二叉树节点个数,初始化 HashMap 中序遍历时间复杂度为 O(n),递归构建二叉树共 n 个节点,时间复杂度为 O(n),层序遍历共 n 个节点,时间复杂度为 O(n)
//空间复杂度为 O(n),n 为二叉树节点个数,HashMap、ArrayList、ArrayDeque,最多占用 O(3n),递归深度最多为 n,占用 O(n) 的栈空间

【LeetCode】剑指 Offer 07. 重建二叉树相关推荐

  1. 【※ LeetCode 剑指 Offer 07. 重建二叉树(中等)】尚待完善

    题目: 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 来源:力扣(LeetCode) 链接:https://leetc ...

  2. 剑指 Offer 07. 重建二叉树【千字分析,三种方法】

    立志用最少的代码做最高效的表达 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3,9,2 ...

  3. 剑指offer 07重建二叉树(根据前序、中序遍历)草真tm难

    /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode ...

  4. 剑指 Offer 07. 重建二叉树

    ⭐简单说两句⭐ CSDN个人主页:后端小知识

  5. 剑指Offer #04 重建二叉树(递归)

    题目来源:牛客网-剑指Offer专题 题目地址:重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序 ...

  6. [剑指offer]8.重建二叉树

    题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  7. 剑指Offer系列 重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  8. 剑指offer之重建二叉树

    1 问题 重建二叉树:给定二叉树的先序遍历(根左右)和中序(左中右)遍历结果,建立这棵二叉树.输入保证二叉树无重复结点 以先序{1, 2, 4, 7, 3, 5, 6, 8}和中序{4, 7, 2, ...

  9. 剑指offer——7.重建二叉树

    题目: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4, ...

最新文章

  1. JMeter中添加dubbo相关插件异常问题解决
  2. JQuery delegate多次绑定的解决办法
  3. html复选框值改变后事件,javascript – 从onclick/onchange事件获取HTML值的复选框
  4. nginx 在阿里云怎么安装mysql_在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境...
  5. 前端代码异常日志收集与监控
  6. 构建基本脚本(转)*****好文章*****
  7. linux修改tomcat时间命令,Linux下把tomcat日志按日期自动分割
  8. dbeaver连接Oracle数据库
  9. sketchup 草图 大师 使用笔记
  10. comsol圆柱形永磁体_comsol永磁体仿真
  11. 微积分学习笔记(2)--修改更新中
  12. find linux 指定后缀_文件查找:find命令,文件名后缀
  13. Sam Altman 山姆奥特曼:How To Invest In Startups如何投资初创公司
  14. 网络安全基础(十二)
  15. 微信朋友圈输入框加发送测试用例总结
  16. 奇虎360 2013校园招聘笔试题
  17. Ubuntu安装opencv的时候报undefined reference
  18. 如何使用 Lightly 进行 Python GUI 项目开发
  19. 说人话,人话,汉明码(海明码、hamming code)通俗易懂的解释,说人话。
  20. Protege使用入门

热门文章

  1. prim算法_图的生成树之最小生成树(Prim)
  2. grafana官方使用文档_5. Centos7 下部署使用 nmon2influxdb
  3. 新浪微博登陆以及发送微博(附python源码)
  4. dm8148 videoM3 link源代码解析
  5. VB6 如何连接MYSQL数据库
  6. Mark:Camel SQL Route
  7. 用rz,sz命令在xshell传输文件
  8. java 标识符_java标识符是什么
  9. mysql 的命名管道_SQL Server中的命名管道(named pipe)及其使用
  10. extjs给panel添加滚动条_extjs.treePanel在ie9下滚动条的显示问题-阿里云开发者社区...