25、数据结构——二叉树——通过遍历构建二叉树

前言

​ 这部分可以说是无论是考研还是期末考试都是非常喜欢出这种类型的题目的,只不过考研的话可能会更加恶心,没有考研需求的同学把这里看懂,复习的时候会轻松很多!

注意

​ 如果我们现在不知道一棵树长什么样子,只知道这棵树的前中后序、层次遍历的一种,我们是不可以确定一棵二叉树的。

​ 如果我们需要确定一颗二叉树,就至少需要前序/后序/层次遍历 + 中序遍历

前序+中序遍历序列

前序遍历序列: 根节点 左子树前序遍历序列 右子树前序遍历序列

中序遍历序列: 左子树前序遍历序列 根节点 右子树前序遍历序列

那么前序遍历序列的第一个结点不就是根节点吗?,然后我们就可以根据中序遍历序列找到根节点从而确认左右子树有哪些构成了对不对?下面我们需要做的就是反复执行这么上述操作,现在我这么讲肯定是非常抽象的,下面我们通过例子来理解:

前序遍历序列:A D B C E

中序遍历序列:B D C A E

第一步:找到根节点A,再在中序遍历确定左右子树,如图

image-20240307215849749

第二步:然后我继续分析左右子树,左子树的话我们就可以通过前序遍历序列继续确认其根节点,然后就是前序遍历确认左右子树,如DBC对应着D就是根节点,再在中序遍历找D,左子树为B,右子树就为C,如图

image-20240307220422608

现在给一个例子大家自己尝试一下,下面有答案:

前序遍历:D A E F B C H G I

中序遍历:E A F D H C B G I

image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636 image-20240229232149636

第一步

image-20240307221053428

第二步

image-20240307221124548

第三步

image-20240307221320289

第四步

image-20240307220939378

注意:为了保险起见,大家可以在这里对自己画的树进行验证一下,自己按照前序遍历和中序遍历读一次看看对不对

后序+中序遍历序列(和前面的寻找方法几乎一模一样,只不过我们前序遍历确认根节点是通过看第1个结点,后序遍历则是看最后1个结点确认根节点的)

后序遍历序列: E F A H C I G B D

中序遍历序列: E A F D H C B G I

image-20240307222059614 image-20240307222148584 image-20240307222415826 image-20240307222503286

持续更新……

下一节内容是26、二叉树——线索二叉树…….

一定要把本节内容看懂再往下看,不然会非常痛苦的哦o(╥﹏╥)oo(╥﹏╥)oo(╥﹏╥)o