首页 > 编程语言 >【C++二叉树】105.从前序与中序遍历序列构造二叉树

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

时间:2024-09-20 14:24:31浏览次数:3  
标签:左子 遍历 中序 右子 C++ 二叉树 前序

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

根据前序遍历和中序遍历构建二叉树

前序遍历访问方式:根-左子树-右子树

中序遍历访问方式:左子树-根-右子树

思路分析:

前序+中序可以构建一颗二叉树:

  1. 前序遍历可以确定根,中序遍历可以确定左子树的中序区间和右子树的中序区间。
  2. 使用左子树的前序+左子树的中序区间递归构建左子树。
  3. 使用右子树的前序+右子树的中序区间递归构建右子树。

代码实现:

注意:

prei要传引用,因为递归过程中要使用上一次递归的prei,如果传值,递归就找不到上一次的prei。

标签:左子,遍历,中序,右子,C++,二叉树,前序
From: https://blog.csdn.net/2202_75924820/article/details/142350051

相关文章

  • C++异常
    1.C语言传统的处理错误的方式传统的错误处理机制:1.终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。2.返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误实际中C语言基本都是使用......
  • C++11
    1.C++11简介在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。......
  • C++模版
    文章目录一、函数模版1、模版的语法2、多个模版类型参数3、模版的实力化二、类模版1、using2、类模版解决问题一、函数模版1、模版的语法模版的关键字为template,后面跟<>尖括号,尖括号里面填类型,类型前面跟一个关键字typename,也可以用class模版生成的函数就......
  • 代码随想录算法训练营第十五天 | Javascript | 继续二叉树的一天 | 力扣Leetcode | 补
    目录前言简介题目链接:501.二叉搜索树中的众数题目链接:236.二叉树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先前言踏平坎坷成大道,斗罢艰险又出发!自律的尽头是自控,自控的尽头是硬控。愿道友们披荆斩棘,终能得偿所愿。简介本人是小几年经验的前端开发,......
  • C++类与对象(三)
    目录1.再谈构造函数1.1构造函数体赋值1.2初始化列表1.3explicit关键字2.STATIC成员2.1概念2.2特性3.C++中成员初始化的新玩法4.友元4.1友元函数4.2友元类5.内部类6.再次理解封装7.再次理解面向对象本次内容大纲:1.再谈构造函数1.1构造函数体赋值在......
  • C++扫盲--直接构造(Direct Initialization)
      在C++中,直接构造(DirectInitialization)是由一种对象构造的方式,它直接调用类的构造函数来初始化对象。这种方式通常用于创建对象时立即提供必要的参数。直接构造的语法如下:ClassNameobjectName(arguments);其中,ClassName是类的名称,objectName是要创建的对象的名称,argument......
  • 代码随想录 -- 二叉树 -- 把二叉搜索树转换为累加树
    538.把二叉搜索树转换为累加树-力扣(LeetCode)思路:定义pre变量用来记录当前节点的前一个节点(右中左顺序遍历)的值。递归出口:当root为空时,return。单层递归逻辑:(右中左)右:self.tra(root.right)中:令root的值为它本身加上pre,更新pre为当前root的值;左:self.tra(root.left)class......
  • C++20 模块化(Modules)
    C++20引入的模块化(Modules)是一个重大改进,旨在取代传统的头文件机制,提高编译速度、代码可维护性以及项目的可扩展性。模块化为C++提供了一种更现代化的代码组织方式,避免了头文件中常见的宏污染、重复编译和复杂的依赖管理问题。概念与背景在C++20之前,C++项目是通过头文......
  • 代码随想录 -- 二叉树 -- 将有序数组转换为二叉搜索树
    108.将有序数组转换为二叉搜索树-力扣(LeetCode)思路:(注意题目要求是平衡二叉树!!!)递归出口:当传入数组为空时,返回空。单层递归逻辑:找到数组中间的值,令其为root,数组左边为root的左子树,数组右边为root的右子树。最后返回root。classSolution(object):defsortedArrayTo......
  • VS(visual studio) C++ 封装dll,以及其隐式调用与显式调用(静态\动态)
    DLL介绍DLL(动态链接库,DynamicLinkLibrary)是一种可执行文件,它包含可以在其他程序中调用的函数和数据。他是Windows操作系统中的一个重要概念,用于代码共享和模块化。特点代码共享:多个程序可以同时使用同一个DLL文件,而不需要将其代码编译到每个程序中。这样可以节省磁盘空间和......