17(105) 从前序与中序遍历序列构造二叉树(Medium)

描述

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

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

示例

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

Description

Given preorder and inorder traversal of a tree, construct the binary tree.

Note: You may assume that duplicates do not exist in the tree.

Example

For example, givenpreorder = [3,9,20,15,7]
inorder = [9,3,15,20,7]
Return the following binary tree:3/ 9  20/  15   7

BitDance Amazon Microsoft Adobe Apple Google Tencent Mi HuaWei VMware

解题

递归解法

class Solution {public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if(preorder.empty()) return NULL;TreeNode* root=new TreeNode(preorder[0]);vector<int> preorder_left, inorder_left, preorder_right, inorder_right;int i;for(i=0;i<inorder.size();++i){if(inorder[i]==root->val) break;inorder_left.push_back(inorder[i]);}//中序遍历根结点的左子树存入inorder_leftfor(++i;i<inorder.size();++i){inorder_right.push_back(inorder[i]);}//中序遍历根结点的右子树存入inorder_rightfor(int j=1;j<preorder.size();++j){//根据中序遍历左子树的长度来确定前序遍历左子树存入preorder_leftif(j<=inorder_left.size()) preorder_left.push_back(preorder[j]);//前序遍历剩下的为右子树 存入前序遍历右子树序列preorder_rightelse preorder_right.push_back(preorder[j]);}root->left=buildTree(preorder_left,inorder_left);root->right=buildTree(preorder_right,inorder_right);return root;}
};

二叉树 中序遍历 python_LeetCode 105 树 从前序与中序遍历序列构造二叉树(Medium)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 找树左下角的值+路径总和+从前序和中序遍历序列构造二叉树(day18*)

    这篇可以主要关注一下如何确定递归时是否需要返回值. LC513. 找树左下角的值 给定一个二叉树的根节点,请找出该二叉树的 最底层最左边 节点的值. 思路1 层序遍历 class Solution:d ...

  8. Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树

    513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...

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

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

最新文章

  1. ftp 文件完整性校验_FTP空间是什么?如何获取免费FTP空间吗?
  2. android jni fork()子进程不运行_安卓系统最重要的进程之一:system_server详细分析...
  3. Python语言防坑小技巧
  4. rabbitmq的启动命令和springboot整合使用rabbitmq
  5. vim+linux+ctags+taglist+winmanager+grep+cscope+supertab+visualmark--ctags
  6. python pygame模块怎么写游戏_使用 Python 和 Pygame 模块构建一个游戏框架
  7. Android 简单几行代码实现摇一摇功能
  8. 基于opencv的gpu与cpu对比程序,代码来自opencv的文档中
  9. linux java文件 core_linux下部署.net core/java
  10. 备份事务日志时遇到 log corruption
  11. 2.5D休闲娱乐生活类插画素材,给设计添彩!
  12. 怎样才能知道自己的手机是否支持北斗导航?
  13. centos如何界面操作mysql_【mysql】centos7下mysql的安装以及基本操作
  14. Latex 摘要排版
  15. 飞塔防火墙服务激活操作步骤
  16. 公众号附件链接怎么放?
  17. 曾仕强《领导的沟通艺术》读书笔记
  18. SAP系统 - ABAVN固定资产报废解析之完全报废案例
  19. cesium 建筑物加载(带高度)
  20. 业务系统里的Office文档如何在线编辑

热门文章

  1. 编程贺卡c语言,C++实现新年贺卡程序
  2. BugkuCTF-Crypto题Crack it
  3. 迷你世界显示未连接服务器成功,迷你世界登录未成功是什么意思 | 手游网游页游攻略大全...
  4. java缩写_Java学习-Java缩写词的意思
  5. mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据
  6. 怎么将翼型导入catia_CATIA导入翼型出现了问题,翼型是在网上找的。说是样条线运算有问题 - 机械 - 小木虫 - 学术 科研 互动社区...
  7. mysql还原txt表的字段结构,mysql 修改表结构(转)
  8. 所有的service报红但不报错_从一个应用报错来看centos系统的/tmp目录自动清理规则...
  9. 计算机网络拓扑结构说课稿,计算机网络应用基础说课稿修稿稿
  10. android url 快捷方式,Android向桌面添加快捷方式,使其指向特定的(URL)网页