【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树

文章目录

  • 【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树


package hot;import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.HashMap;class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(int val){this.val = val;}
}public class Solution105 {public static void main(String[] args) {int[] preorder = {3,9,20,15,7};int[] inorder = {9,3,15,20,7};Solution105 solution = new Solution105();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(0);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;}
}//时间复杂度为 O(n)
//空间复杂度为 O(n)

【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树(哈希表+递归)相关推荐

  1. 【LeetCode】105#从前序与中序遍历序列构造二叉树

    题目描述 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9 ...

  2. 【LeetCode笔记】105. 从前序与中序遍历序列构造二叉树(Java、递归、二叉树、哈希表)

    文章目录 题目描述 代码 & 思路 题目描述 这题主要是考察前序.后序的性质,以及相互间的关系 代码 & 思路 前序:根 - 左 - 右: 中序:左 - 根 - 右,那么用前序数组的首 ...

  3. LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

    LeetCode 刷题之旅(2020.05.22)--105. 从前序与中序遍历序列构造二叉树(中) 题目: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如, ...

  4. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

    引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...

  5. 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树

    两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...

  6. 二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树

    题目链接: 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)​leetcode-cn.com 题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树,可以假设树中没有重复的元素. 示例: 前 ...

  7. leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法

    如题: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3 ...

  8. leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

    目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...

  9. leetcode 105. 从前序与中序遍历序列构造二叉树

    难度:中等 频次:68 题目: 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点 ...

最新文章

  1. python【力扣LeetCode算法题库】9- 回文数
  2. css 引用otf文件,CSS-如何将OTF / TTF文件转换为EOT格式?
  3. linux线程同步(1)-互斥量
  4. 雷蛇灯光配置文件_雷蛇猎魂光蛛竞技版机械键盘评测
  5. 吾解——HTTP(超文本传输协议)
  6. 公众号文章折叠点击后展开案例_(案例)蜂窝纸板在包装中的应用重型箱
  7. Linux高级权限管理
  8. Ti_ccs_2.0
  9. 论中国智慧城市的发展前景
  10. 数值分析实验四 最小二乘法曲线拟合
  11. HLS中pragma的归纳总结(入门级)
  12. python面板数据分析代码_面板数据分析是什么如何进行面板数据分析?
  13. 牛顿冷却定律,衰减因子alpha
  14. 基于springboot的校园食堂订餐系统
  15. 传播正能量——做一个快乐的程序员
  16. layui table点击tr更改当前行颜色
  17. 破解无线网络密码-BT3如何使用1
  18. [深入浅出]MySQL安全规范
  19. 如何进行js的debug
  20. strcmp,strcpy,strstr函数

热门文章

  1. java m.find()_正则有关问题 m.groupCount() 和 m.find()
  2. MySQL对字符集_对MySQL字符集的认识
  3. UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
  4. PHP高级教程-过滤器
  5. 解决XCode安装插件后插件不能使用的问题(转载)
  6. 越狱Season 1-Episode 15: By the Skin and the Teeth
  7. poj 1252 Euro Efficiency (01背包变形)
  8. SkyEye图形化界面使用技巧篇(二)
  9. 编程基础 之 位运算专题
  10. PartitionStateMachine分析