基于非链式(数组)结点结构的二叉树的层序、先序、中序、后序输入创建以及层序、先序、中序、后序输出

这个系列来记录学习一下如何用数组完成二叉树的4种顺序的创建,以及其4种顺序的遍历。

我们知道,对于一棵二叉树而言它有4种遍历的顺序,那自然就导致其输入结点时,也分这四种顺序。

分别是——

层序:                  指按二叉树的层数由上往下、从左到右依次遍历结点。

先序(或前序):指按“根、左、右”的顺序遍历结点。

中序:                  指按“左、根、右”的顺序遍历结点。

后序:                  指按“左、右、根”的顺序遍历结点。

放一张我的草稿图,我知道很草稿,图草知识不草,望轻喷/(ㄒoㄒ)/~~

这里值为-1的结点代表该结点为空,这样设置是为了方便递归返回

基于非链式(数组)结点结构的二叉树的层序、先序、中序、后序输入创建以及层序、先序、中序、后序输出_第1张图片

在这里放两组测试输入数据,可由此测试代码是否有误——

层序->        1 2 3 4 5 6 7 -1 -1 -1 -1 -1 -1 -1 -1        1 2 3 4 5 -1 -1 -1 -1
前序->        1 2 4 -1 -1 5 -1 -1 3 6 -1 -1 7 -1 -1        1 2 4 -1 -1 5 -1 -1 3 -1 -1
中序->        4 -1 -1 2 5 -1 -1 1 6 -1 -1 3 7 -1 -1        4 -1 -1 2 5 -1 -1 1 3 -1 -1

后序->        4 -1 -1 5 -1 -1 2 6 -1 -1 7 -1 -1 3 1        4 -1 -1 5 -1 -1 2 3 -1 -1 1

比较值得声明的是:

在二叉树的一维数组中,我会主观把下标为0的那个位置给空出来不使用,是为了方便后续的插入、遍历结点操作。

并主观认为,值为-1代表该结点为空(如果是链表的话就可以存放空指针了),以便递归遇到空结点这个标志可及时返回。

本篇仅作一个目录大纲使用,具体实现请通过下面的传送门进行跳转查看。


基于非链式(数组)结点结构的二叉树的层序输入创建以及遍历-CSDN博客

 基于非链式(数组)结点结构的二叉树的前(先)序输入创建以及遍历-CSDN博客

你可能感兴趣的:(数据结构,c++,数据结构)