这个系列来记录学习一下如何用数组完成二叉树的4种顺序的创建,以及其4种顺序的遍历。
我们知道,对于一棵二叉树而言它有4种遍历的顺序,那自然就导致其输入结点时,也分这四种顺序。
分别是——
层序: 指按二叉树的层数由上往下、从左到右依次遍历结点。
先序(或前序):指按“根、左、右”的顺序遍历结点。
中序: 指按“左、根、右”的顺序遍历结点。
后序: 指按“左、右、根”的顺序遍历结点。
放一张我的草稿图,我知道很草稿,图草知识不草,望轻喷/(ㄒoㄒ)/~~。
这里值为-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博客