/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {//这题是我遇到解答最难的一道题,我一度刷题想要放弃,今天下定决心搞出来//整个算法思想:前序遍历[根节点|左子树|右子树];中序遍历[左子树|根节点|右子树];//定义root为前序遍历中根节点位置,定义left为中序遍历中子树左边界,定义right为中序遍历中子树右边界//首先根据前序遍历中根节点位置找到中序遍历中根节点位置可以把中序遍历划分开来,//再根据左右子树元素数量,划分前序遍历。最后得出,左右子树分别的前序根节点,中序左右边界。//在回溯时,新建头节点,还原二叉树。//定一个数组,目的是为了resur递归这个函数可以使用到这个数组int preorder[];//建立实例引用变量是为了方法间共享Map<Integer,Integer> maplist = new HashMap<Integer,Integer>();public TreeNode buildTree(int[] preorder, int[] inorder) {this.preorder = preorder;//通过this变量把传进来的引用拷贝一下for(int i = 0; i < inorder.length; i++){maplist.put(inorder[i] , i);//做一个值到索引的映射,可以通过值直接找到中序遍历中的索引位置}return resur(0, 0, preorder.length - 1);}public TreeNode resur(int root, int left, int right){if(left > right) { return null;}//终止条件TreeNode node = new TreeNode(preorder[root]);//回溯的时候建立二叉树int i = maplist.get(preorder[root]);//通过前序遍历中的值,直接找到中序遍历中的索引node.left = resur(root + 1, left, i - 1);//递归左子树node.right = resur(root - left + i + 1, i + 1, right);//递归右子树return node;}
}

剑指offer 07重建二叉树(根据前序、中序遍历)草真tm难相关推荐

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

    [LeetCode]剑指 Offer 07. 重建二叉树 文章目录 [LeetCode]剑指 Offer 07. 重建二叉树 package offer;import java.util.ArrayD ...

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

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

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

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

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

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

  5. C/C++面试题—重建二叉树【前序 + 中序- 重建二叉树 和 后序 + 中序 - 重建二叉树】

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

  6. 剑指offer之二叉搜索树的后序遍历序列

    剑指offer之二叉搜索树的后序遍历序列 欢迎关注作者博客 简书传送门 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个 ...

  7. 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列

    [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...

  8. 剑指 Offer 33. 二叉搜索树的后序遍历序列

    剑指 Offer 33. 二叉搜索树的后序遍历序列 原始题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian- ...

  9. 栈的亚特兰数与二叉树的前序中序遍历序列

    栈的亚特兰数与二叉树的前序中序遍历 @(算法学习) 已经熟知的是二叉树的中序遍历和先序遍历可以唯一确定一棵树. 更有趣的知识点是,以先序遍历序列作为入栈序列,那么出栈序列恰为中序遍历.这样就把两种遍历 ...

最新文章

  1. C#用XmlDocument操作XML
  2. 第四篇: python函数续
  3. 对于java反射的理解
  4. datalist标签
  5. 一个快速排序 和 直接插入排序 的简单 c程序
  6. 21. GD32F103C8T6入门教程-flash/fmc连续读写操作
  7. 最早的算法可追溯到三千年前,“所谓的 AI 并非源自先进的技术”!
  8. Statement对象最新解析
  9. window.postMessage
  10. MySQL 浅谈NOT NULL和DEFAULT的关系
  11. 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
  12. #UML# Astah+Doxygen 将C++源码映射为类图
  13. 建立完善的员工晋升机制_员工晋升管理制度精选5篇
  14. English trip EM3 LP 4B Home Design Relationship Teacher:Ryan
  15. Java SPI机制实现插件化扩展功能
  16. linux怎么查看ip地址类型(查看静态ip、查看固定ip、查看动态ip)(ip addr show、nmcli dev show)
  17. ESCH合约白皮书简介
  18. 页面中常用的html元素,HTML网页的基本标签 最常用的HTML标签
  19. DX学习笔记(创建DX自带几何体)
  20. 【企业电子杂志制作】云展网教程 | 如何隐藏电子杂志和书橱中的分享按钮?

热门文章

  1. 谁欠谁的幸福(高考满分作文)
  2. 小学计算机走进魔力画室教案,第15课 创意绘画初体验 教案
  3. Linux/Ubuntu下ffmpeg安装教程
  4. Non-function value encountered for default slot. Prefer function slots for better performance.
  5. Vue3: Non-function value encountered for default slot. Prefer function slots for better performance.
  6. 华为防火墙双机热备配置实例
  7. vue上传图片,并回显图片
  8. 一、vue中当数据在父组件需要给子组件传递数据的时候,子组件输出为undefined
  9. 1457 -- 探索的奶牛
  10. 说 2 件开心的事儿