今天为大家讲解 LeetCode 第 105 题,是一道关于数组和树的题目。

题目描述

根据一棵树的前序遍历与中序遍历构造二叉树。

注意: 你可以假设树中没有重复的元素。

例如,给出

前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树:

    3   / \  9  20    /  \   15   7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

preorder第一个元素为root,在inorder里面找到root,在它之前的为左子树(长stopIndex),之后为右子树。preorder[1]到preorder[stopIndex]为左子树,之后为右子树,分别递归。

代码实现

//go/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func buildTree(preorder []int, inorder []int) *TreeNode {    if len(preorder) == 0 {        return nil    }    root := &TreeNode{preorder[0], nil, nil}    i := 0    // 在inorder里root的下标    for ; i len(inorder); i++ {        if inorder[i] == preorder[0] {            break        }    }    // root前的长度,即左子树的长度    stopIndex := len(inorder[:i])+1    root.Left = buildTree(preorder[1:stopIndex], inorder[:i])    root.Right = buildTree(preorder[stopIndex:], inorder[i+1:])    return root}

郑重声明:

所展示代码已通过 LeetCode 运行通过,请放心食用~


推荐阅读

  • leetcode|被一道美团面试题转晕

学习交流 Go 语言,扫码回复「进群」即可

站长 polarisxu

自己的原创文章

不限于 Go 技术

职场和创业经验

Go语言中文网

每天为你

分享 Go 知识

Go爱好者值得关注

二叉树的中序遍历_Go 刷 leetcode从前序与中序遍历序列构造二叉树相关推荐

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

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

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

    [LeetCode][HOT]105. 从前序与中序遍历序列构造二叉树 文章目录 [LeetCode][HOT]105. 从前序与中序遍历序列构造二叉树 package hot;import java ...

  3. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  4. 刷题记录8---验证二叉搜索树+二叉树的层序遍历+从前序与中序遍历序列构造二叉树+二叉树展开为链表+二叉树的最近公共祖先

    前言 所有题目均来自力扣题库中的hot 100,之所以要记录在这里,只是方便后续复习 98.验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜 ...

  5. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  6. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]

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

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

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

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

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

  9. 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列

    72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...

最新文章

  1. Python基础——Anaconda的安装使用
  2. ubuntu20.0.4如何更新软件源?快速更新阿里源步骤具体实现
  3. java log4j 多个文件_java – Log4j:每个请求一个日志文件
  4. 【好文】为什么必须学好.Net Core?怎样弯道超车新年高薪?这样做,一周就够了!(文末彩蛋)...
  5. 照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
  6. ​《麻省理工科技评论》选出2019年全球十大突破性技术
  7. Python爬取抖音app视频
  8. 定时执行sql统计数据库连接数并记录到表中
  9. Pycharm中SQL语句提示SQL Dialect is Not Configured
  10. 智慧书-永恒的处世经典格言:121-160
  11. php中session销毁,PHP中session变量的销毁
  12. 心形灯c语言程序,用C语言实现心形表白程序[酷炫动态版]
  13. gif透明背景动画_如何利用premiere制作GIF动态图片
  14. 图像质量评价指标FID、LPIPS、NIQE及其代码
  15. ChatGPT聊天机器人如何发图片????
  16. Neural Networks Basics
  17. HashMap 的底层原理
  18. linux shell脚本编写 | 三角形 | 梯形 | 菱形 | 九九乘法表 | 矩形 | 超详细
  19. 添加、修改、删除以及查看本地git的用户名和邮箱
  20. 美团,大众下拉菜单的实现

热门文章

  1. 寒冷的高纬度——我的梦开始的地方
  2. 任意模数NTT(MTT)
  3. 数据结构与算法 | 二叉树四种的遍历方法(递归与非递归)
  4. IO中的阻塞、非阻塞、同步、异步概念分析详解
  5. 延时队列实现的几种姿势
  6. SQL 查询总是先执行SELECT语句吗?
  7. 我在 Go 圈儿里的几位老朋友
  8. 动态规划之KMP字符匹配算法
  9. 【专题介绍】视频内容生产与消费创新(Part1)
  10. LiveVideoStack调查问卷