Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >笔试常考题型之二叉树的遍历

笔试常考题型之二叉树的遍历

作者头像
Zoctopus
发布于 2018-06-04 02:29:36
发布于 2018-06-04 02:29:36
5010
举报

一、介绍

在互联网公司的笔试题中,经常会出现给出一个二叉树的前序和中序遍历,让你去求它的后序遍历问题,因此我将这类题型的解题步骤总结如下。

二、例题

题目解析:

注:此题中f节点的爸爸是d。

前序遍历顺序 根->左->右:abefd。

中序遍历顺序 左->根->右:ebadf。

后序遍历顺序 左->右->根:ebfda。

题目解析:

二叉搜索树有一个很重要的特性:树中任何结点的左子树中所有结点的值均比该结点小,右子树中所有结点的值均比该结点大。对二叉搜索树进行中序遍历即得到一个递增排序的序列。

因此,检查一个树是否是二叉搜索树可以使用中序遍历,根据递增排序的序列生成二权搜索树也可以使用中序遍历。

参考资料:二叉搜索树的简单介绍 二叉排序_搜索_查找树 C++

题目解析:

1,先序遍历的第一个节点肯定是根节点,所以A为该二叉树的根节点。

2,中序遍历中根节点左侧的节点全是根节点左子树的节点,根节点右侧的节点全是根节点的右子树。所以我们可以分成 DCB(左) | A(根) | EFG(右)。

3,递归使用上述两个步骤,可以画出整个二叉树。

(1)先得出A是根节点。

(2)DCB是A左子树中的点,EFG是A右子树中的点。

(1)B是A左子树的根节点,E是A右子树的根节点。

(2)CD是B左子树中的点,FG是E右子树中的点。

(1)C是B左子树的根节点,F是E右子树的根节点。

(2)D是C左子树中的点,G是F右子树中的点。

因此该二叉树的后序遍历为(左->右->根):DCBGFEA。

三、解题感受

遇到这种问题,记得先找出根节点,然后找出根节点左边的节点和根节点右边的节点,然后以此类推,找出根节点左子树的根节点和右子树的根节点...最后可以根据前序和中序遍历画出一个二叉树,再根据画出的二叉树(前提是要保证之前的步骤都正确)求出后序遍历。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端工程师leetcode算法面试必备-简单的二叉树
树是计算机科学中经常用到的一种非线性数据结构,以分层的形式存储数据。二叉树是一种特殊的树结构,每个节点最多有两个子树,通常子树被称作“左子树”和“右子树”。
js2030code
2022/10/31
2880
JS算法之二叉树、二叉搜索树
今天,我们继续探索JS算法相关的知识点。我们来谈谈关于树Tree 的相关知识点和具体的算法。
前端柒八九
2022/09/22
6690
【算法】二叉树遍历算法总结:前序中序后序遍历
但是在平常的笔试面试中,其出现的频率其实并不是特别的高,我推测是这种题目相对来说比较基础,算是一个基础知识点。
蛮三刀酱
2020/02/25
1.2K0
【算法】二叉树遍历算法总结:前序中序后序遍历
前端工程师leetcode算法面试必备-二叉树的构造和遍历
上一篇中介绍了如何采用 DFS 和 BFS 的搜索思想去实现二叉树的前序遍历、中序遍历、后序遍历以及分层遍历。
js2030code
2022/10/31
2770
重建二叉树(Java)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不包含重复的数字。例如输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1,5, 3, 8, 6},则重建出二叉树并输出它的头结点。二叉树结点的定义如下:
全栈程序员站长
2022/07/01
2910
前端学数据结构与算法(六):二叉树的四种遍历方式及其应用
上一章我们从0到1的实现了一颗二叉搜索树,以及理解了二叉搜索树的特性与基本操作,这一章介绍关于二叉树的更多操作,也就是树的遍历。主要包括前序遍历、中序遍历、后序遍历、层序遍历,前面三种也叫深度优先遍历(DFS),最后的层序遍历也叫广度优先遍历(BFS),理解这四种遍历方式的不同,再遇到树相关的算法问题时,也就能更加游刃有余。这里不单指二叉搜索树,遍历思想同样适用于多叉树。
飞跃疯人院
2020/10/07
1.3K0
为实习准备的数据结构(4)-- 二叉树
==特别标注:如果二叉树中有相同值元素的存在,那么有极大概率还原失败,下面中、后序遍历也是==
看、未来
2021/03/17
4060
关于二叉树,你该了解这些......
说道二叉树,大家对于二叉树其实都很熟悉了,本文呢我也不想教科书式的把二叉树的基础内容在啰嗦一遍,所以一下我讲的都是一些比较重点的内容。
代码随想录
2021/07/16
4640
聊聊二叉树的遍历(递归和非递归)
二叉树也是常用的数据结构,通过使用二叉树可以快速的对数据进行排序或者查找,在常用的堆排序算法中,堆的底层实质就是一个模拟的完全二叉树!等等,什么是完全二叉树?二叉树又是什么?有哪几类?让我们开始今天的算法课堂~
算法工程师之路
2019/08/05
1K0
二叉树面试题-你已经是棵成熟的二叉树了,要学会自己解题
如果一棵树只有一个节点,那么它的深度是1.如果根节点只有左子树,那深度是其左子树的深度+1,同样的只有右子树的话,深度是其右子树深度+1,如果既有左子树又有右子树,取两个子树的深度最大值+1即可。用递归很容易实现。
唔仄lo咚锵
2022/05/08
2830
二叉树面试题-你已经是棵成熟的二叉树了,要学会自己解题
LeetCode通关:连刷三十九道二叉树,刷疯了!
大家好,我是拿输出博客来督促自己刷题的老三,这一节我们来刷二叉树,二叉树相关题目在面试里非常高频,而且在力扣里数量很多,足足有几百道,不要慌,我们一步步来。我的文章很长,你们 收藏一下。
三分恶
2021/09/08
8680
【C++&数据结构】二叉树(结合C++)的经典oj例题 [ 盘点&全面解析 ](24)
2. 利用while循环,在中序遍历中找到与 preorder[i] 对应的 节点rooti
YY的秘密代码小屋
2024/01/22
3160
【C++&数据结构】二叉树(结合C++)的经典oj例题 [ 盘点&全面解析 ](24)
C++【二叉树进阶试题】
这是一篇关于 二叉树 题解博客,主要包含以下题目,可根据当前文章中的目录随意跳转查看
北 海
2023/07/01
2810
C++【二叉树进阶试题】
关于二叉树,你该了解这些!
说道二叉树,大家对于二叉树其实都很熟悉了,本文呢我也不想教科书式的把二叉树的基础内容在啰嗦一遍,所以一下我讲的都是一些比较重点的内容。
代码随想录
2020/09/27
7250
二叉树oj以及前中后序非递归写法
给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。
始终学不会
2023/10/17
2270
二叉树oj以及前中后序非递归写法
python二叉树
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序时,可用树表示源程序的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。
用户7886150
2020/11/29
4830
二叉树的详解与实现「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138337.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/03
3530
二叉树的详解与实现「建议收藏」
二叉树的遍历方式详解及代码示例
二叉树是数据结构中的一种基本形式,它广泛应用于各种算法中。二叉树的遍历是学习树结构时不可避免的一部分。今天这篇博客将详细讲解二叉树的三种主要遍历方式:前序遍历、中序遍历和后序遍历,并通过代码示例帮助大家理解它们的实现方式。👨‍💻
默 语
2025/05/21
1880
平衡二叉树
平衡因子:每个结点的平衡因子就是左右子树的高度之差,即可用如下公式表示:BF(T) = Hl-Hr 平衡二叉树:平衡二叉树可能是空树,也有可能是左右子树高度之差小于等于1的树,即平衡因子的绝对值小于等于1。 那么为了使整棵树基金可能平衡,那么在构造树的过程中必须随时检查每个结点的平衡因小于等于。那么针对各种情况,为了让树更加平衡,那么必须对不平衡的点进行旋转处理,根据不同情况可以分为单左旋(LL旋转),单右旋(RR旋转),左右旋转(LR旋转),右左旋转(RL旋转)这4种旋转技术。
AI那点小事
2020/04/20
7020
平衡二叉树
数据结构与算法(六) 二叉树遍历
•任意一个节点的值都大于其左子树的值•任意一个节点的值都小于其右子树的值•他的左右子树也是一颗二叉搜索树•二叉搜索树可以大大提高效率(搜索和添加删除时间复杂度都是logn)•二叉搜索树的元素必须是具备可比较性•自定义类型需要指定比较方式•不允许为null•二叉树没有索引的概念
老沙
2019/10/11
5030
数据结构与算法(六) 二叉树遍历
推荐阅读
相关推荐
前端工程师leetcode算法面试必备-简单的二叉树
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档