关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力(上)

发布时间:2023-06-28 10:00:24

前言

本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面试真题,面试、找工作完全可以来这里找机会。此外,网站内的编码主题多样化,调试功能可运用性强,可谓是非常注重用户体验。这么好的免费刷题网站还不快入手吗,快去注册开启算法百炼成神之路吧!


1、AB16 实现二叉树先序,中序和后序遍历

使用 递归 实现,入门的难度,可以花少点时间挑战一下


题目链接:前中后序遍历


1.1、解题思路

从示例中的返回值可以看出,题目要求最终返回一个 二维数组,那么就利用灵活的 vector 容器来解题:


先使用递归法写好三个序列的遍历序列

然后用三个一维 vector容器分别存放前、中、后的遍历序列

最后将三个一维容器插进一个二维 vector 容器中并返回

1.2、代码实现及注释

本题源码:

请联系客服获取

   

重要注释:


先、中、后序遍历的区别乍一看就是访问结点的顺序不同,但是如果去分析递归你会发现:

先序遍历:访问到一个结点后,先将值插入数组,然后往左右子树递归,不为空就插入数据,为空就停止递归。

中序遍历:一直往根结点的左子树递推,最先插入数据的一定是二叉树最左的一个结点,然后是根结点、右结点。

后序遍历:与中序类似,区别是插入最左边结点后,先处理右子树在处理根结点。

先序最好理解,像是一步步的顺序进行;而中序和后序都要先递推到最左的子树然后再回溯。



/template/Home/leiyu/PC/Static