根据前序和中序推出后序
时间:2022-04-22
本文章向大家介绍根据前序和中序推出后序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近面试总遇到这种根据给出的两类序遍历,然后求按另一种形式序的遍历。看来有必要好好总结下这个知识点,省的每次笔试时都得花不少时间推导。
首先,我们看看前序、中序、后序遍历的特性: 前序遍历:(根—>左—>右) 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历:(左—>根—>右) 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历:(左—>右—>根) 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点
三序中知道其中两个就可以推出第三个,但前提是我们必须知道中序(这里是针对二叉树的,不包括二叉搜索树).因为:先序和后序给我们提供的信息是一样的--告诉我们谁是根节点,中序则告诉我们左右子树在哪儿。
例:已知先序为eacbdgf,中序为abcdefg,求后序。
由先序我们知道e为根节点,我们在中序中把左右子树括起来 --(abcd)e(fg)
同样对左子树abcd进行分析,先序为acbd,中序为abcd.--a(bcd)
递归下去就可以了
后序为bdcafge
扩展:
在2014年阿里实习生招聘试题中就有一个问题:
下面关于二叉搜索树的是否正确? 给定一棵二叉搜索树的前序和后序遍历结果,无法确定这棵二叉搜索树。 |
---|
这个说法是错误的。
二叉树(不是搜索二叉树),必须是中根加上先根或者后根就能构造出树,但是,这里面说了是二叉搜索树,已经暗含中根了
- 我们应该担心吗?人工智能现在可以通过交谈来学习新单词!
- 印度财政部:比特币是纯粹投机行为 区块链资产是“庞氏骗局”
- 法律人工智能实验室成立,法官和律师会丢饭碗吗?
- 让GridView中CheckBox列支持FireFox
- 在ASP.NET MVC中通过URL路由实现对多语言的支持
- AI加持下的假肢将会越来越聪明
- 通过几个Hello World感受.NET Core全新的开发体验
- ASP.NET MVC三个重要的描述对象:ControllerDescriptor
- 基于自制数据集的MobileNet-SSD模型训练
- .NET Core采用的全新配置系统[1]: 读取配置数据
- ASP.NET MVC三个重要的描述对象:ActionDescriptor
- 升级比特币区块链后,以特币已叩响成功的大门
- .NET Core采用的全新配置系统[2]: 配置模型设计详解
- 采用双拼域名meicai.cn的美菜网融资4.5亿美元
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C#代码折叠#region
- c#实时显示时间 C#-WinForm-Timer控件
- 记一次 JAVA 的内存泄露分析
- for循环、递归、回溯
- delete 后加 limit 是个好习惯么?!
- @Component,@Service 等注解是如何被解析的
- 怎么摆脱又臭又长的 Git 命令?
- Redis 怎么防止数据丢失?面试必问!
- 使用vs2015编写c语言的方法
- 哪些场景会产生OOM?怎么解决?
- 预处理命令
- IntelliJ IDEA 调试 Java 8 Stream,实在太香了!
- 仅需四步,写一个 Spring Boot Starter
- 一个简单案例,带你看懂GC日志!
- C#中ref和out的区别使用