从先序与中序遍历序列构造二叉树

news2024/9/23 5:30:29

从先序与中序遍历序列构造二叉树

描述
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。
在这里插入图片描述

递归法

解题思路
通过先序遍历我们可以找到root,因为列表中没有重复数字的原因,根据root我们可以根据中序找到root的索引位置,该索引位置左边就是左子树,右边就是右子树。而且根据中序中root的索引位置,可以在先序中确定先序里左子树索引位置为[1:1+idx),右子树索引位置[1+idx:-1]。根据位置,通过递归法直到遍历到结束。
在这里插入图片描述
ps:图片来源leetcode题解

代码实现

class TreeNode:
	def __init__(self,x):
		self.val = x
		self.left = None
		self.right = None
class Solution:
	def buildTree(self,preorder:List[int],inorder:List[int])->:
		# 递归中止条件
		if not preorder or not inorder:
			return
		
		# 根据先序列表得到根节点root
		root = TreeNode(preorder[0])
		# 根据中序列表得到根节点的索引位置
		idx = inorder.index(preorder[0])
		
		# 递归法找到根节点的左子树部分
		root.left = self.buildTree(preorder[1:1+idx],inorder[0:idx])
		# 递归法找到根节点的右子树部分
		root.right = self.buildTree(preorder[1+idx:],inorder[idx+1:])
		return root

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1536505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

山西生态与智慧水利科技展会之华锐VRAR元宇宙水利应用展位恭候大驾

2024黄河流域生态与智慧水利科技博览会于今日在山西太原隆重开启,本次展会持续至3月24日共三天时间,相比之前的水展,这次展会区域之广辐射了中部六省,展会内容之多包括黄河流域生态保护的现状与挑战、水资源管理与水污染防治、智慧…

鸿蒙开发-UI-动画-页面间动画

鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 鸿蒙开发-UI-图形-组件内转场动画 鸿蒙开发-UI-图形-弹簧曲线动画 文章目录 前言 一、放大缩…

今天简单聊聊容器化

什么是容器化 容器化(Containerization)是一种软件开发和部署的方法,其核心思想是将应用程序及其所有依赖项打包到一个独立的运行环境中,这个环境被称为容器。容器化技术使得应用程序可以在不同的计算环境中以一致的方式运行&…

ES集群不识别节点SSL证书的问题处理

问题描述 在启动ES服务并试图加入其他节点上已启动的集群时,出现报错(原文是一大段话,我按语义拆成了几段): [2024-03-19T16:32:02,844][WARN ][o.e.c.s.DiagnosticTrustManager] [node-2-master] failed to establish trust with server a…

宏璇物流邀您参观2024快递物流供应链与技术装备展览会

展会介绍 ESYE CHINA 2024快递物流展是亚洲范围内超大规模的快递物流业展示平台,由于展会的需求及扩大市场的影响力,ESYE 2024转战杭州,凭借着先进的经济发展水平、优越的地理位置、成熟的产业环境以及巨大的电商、微商、零售业、消费的市场…

云手机为电商提供五大出海优势

出海电商行业中,各大电商平台的账号安全是每一个电商运营者的重中之重,账号安全是第一生产力,也是店铺运营的基础。因此多平台多账号的防关联管理工具成了所有电商大卖家的必备工具。云手机最核心的优势就是账户安全体系,本文将对…

ky10.aarch64安装Jenkins

参考地址:《安装部署 Jenkins》 前言 有war包和rpm两种安装方式,如果是长期使用更加推荐rpm的安装方式,可以更好的管理Jenkins; 我此次安装jenkins主要用于测试和简单的个人使用,所以选择更轻便的war安装。 1 下载J…

【C#】C#窗体应用修改窗体的标题和图标

修改窗体顶部的标题和图表,如果不修改则会使用默认的图标,标题默认为Form1,如第一张图,这时候如果想换成和系统有关的内容,如第二张图,可以使用下面的方法进行修改,修改后打开该软件任务栏显示的…

【yaml包如何安装】

【yaml包如何安装】 安装yaml包(也称为pyyaml) ,可以直接使用如下述命令 pip install pyyaml

LeetCode - 存在重复元素

219. 存在重复元素 II 这道题可以用两个方法解决。 哈希表 从左到右遍历数组,并将数组的下标存到hash中,在遍历数字的过程中,如果hash中不存在nums[i],将nums[i]加入到hash当中,若存在,则判断下标之间的关…

【算法】数组-移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的…

Java的IO之BIO

Java IO流是用于处理输入和输出的机制,用于读取和写入数据。Java提供了丰富的IO类和接口,用于处理不同类型的数据和操作。Java中的IO模型主要分为BIO和NIO两种,他们可以分别被视为IO编程的不同风格或模式,并非IO流具体的类型&…

云计算2主从数据库

设置主从数据库的目的是将数据库1和数据库2分别建在两个虚拟机上,并实现数据互通访问 首先准备两个虚拟机,这里示例ip分别为: 192.168.200.10;192.168.200.20 修改主机名,一个是mysql1,一个是mysql2&#x…

除了Confluence,还有哪些好用的知识库平台

大家都知道,Confluence作为知识库平台界的佼佼者,确实给我们带来了不少便利。但好东西总是层出不穷,除了Confluence,市面上还有其他好用的知识库平台也值得我们去尝试。今天,我就给大家聊聊我个人用过并且觉得挺不错的…

Vue+Element UI 开发PC端页面,出现页面抖动原因及解决办法

问题描述: 页面 拖动 放大放小,出现页面抖动,屏幕不停闪动 解决方案: 1.找到相对应的页面的div 加上样式: .app-container {height: 100%;overflow: auto;margin: 0; //加上这个把滚动条隐藏掉,否则就…

PHP页面如何实现设置独立访问密码

PHP网页如果需要查看信息必须输入密码,验证后才可显示出内容的代码如何实现? 对某些php页面设置单独的访问密码,如果密码不正确则无法查看内容,相当于对页面进行了一个加密。 如何实现这个效果,详细教程可以参考:PHP页面如何实现…

香港科技大学(广州)先进材料学域可持续能源与环境学域智能制造学域博士招生宣讲会——北京专场(暨全额奖学金政策)

三个学域代表教授亲临现场,面对面答疑解惑助攻申请!可带简历现场咨询和面试! 💰一经录取,享全额奖学金1.5万/月! 报名链接: https://www.wjx.top/vm/wF2Mant.aspx# 地点:中关村皇冠…

【免费】如何考取《鲸鸿动能广告初级优化师》认证(详细教程)

鲸鸿动能广告初级优化师认证考试PC网址 初级:鲸鸿动能广告初级优化师认证-华为开发者学堂 (huawei.com) 注:免费认证,里面包含免费的课程,浏览器用Edge。 文章目录 鲸鸿动能广告初级优化师认证考试网址 前言 一、备考流程 二…

C++ Qt开发:QProcess进程管理模块

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QProcess组件实现针对进程的控制管理…

“找不到msvcr100.dll”或“msvcr100.dll丢失”的多种解决方法分享

当计算机系统中msvcr100.dll文件发生丢失时,导致某些应用程序无法正常运行。msvcr100.dll是Microsoft Visual C Redistributable Package的一部分,对于许多基于Windows操作系统的应用程序正常运行至关重要。小编将介绍5种解决msvcr100.dll丢失问题的方法…