作为一个数据结构初学者,最近在学习二叉树的过程中,我一直有个想法,那就是实现下二叉树的可视化,不然每次手动画出二叉树的图像确实太繁琐了,但是自己知识有限,在利用下队列的知识,完成一下简单的二叉树可视化的实现吧。
首先,先上一下效果吧,没有树枝的二叉树
通过大致的空间关系,我们还是可以看出各个结点之间的关系。下面是实现的具体。
首先,我们可以用二叉树的层次遍历,在层次遍历的基础上,每遍历一层,就在末尾输出一个换行,那么就可以将二叉树的基本层次结构输出出来。层次遍历如何实现呢?
就是使用辅助队列。代码如下
void LevelOrder(BitTree t) {
LinkQueue q;//声明队列
InitQueue(q);//初始化队列
BitTree p;//定义一个指针
EnQueue(q, t);//入队一个元素
while (!IsEmptyQueue(q)) {
DeQueue(q, p);//出队的时候,返回队头结点所保存的指向二叉树node的指针
VisitNode(p);//访问结点
if (p->lchild != NULL) {
EnQueue(q, p->lchild);
}
if (p->rchild != NULL) {
EnQueue(q, p->rchild);
}
}
}
当然可以直接使用数组,这里就是简单介绍一下层次遍历
接下来,我们要分析一下树的结构情况。