二叉树的层序遍历:
二叉树结构:
#include "stdafx.h"
#include "BiTree.h"//二叉树头文件
[下载地址:](http://download.csdn.net/detail/wxgxgp/9825018)
#include "SeqCQueue.h"//队列头文件
[下载地址:](http://download.csdn.net/detail/wxgxgp/9825013)
void ForEach(BiTreeNode *root)//层序遍历
{
SeqCQueue Q;
BiTreeNode *p;
QueueInitiate(&Q);
QueueAppend(&Q,root);
while (QueueNotEmpty(Q)==1)
{
QueueDelete(&Q,&p);
printf("%c", p->data);
if (p->leftChild != NULL)
QueueAppend(&Q, p->leftChild);
if (p->rightChild != NULL)
QueueAppend(&Q, p->rightChild);
}
}
void Create(BiTreeNode *root)//创建二叉树
{
BiTreeNode *p;
p = InsertLeftNode(root, 'A');
p = InsertLeftNode(p, 'B');
InsertLeftNode(p, 'D');
InsertRightNode(p, 'E');
p = InsertRightNode(root->leftChild, 'C');
InsertLeftNode(p, 'F');
InsertRightNode(p, 'G');
}
int main()
{
BiTreeNode *root;
Init(&root);
Create(root);
ForEach(root->leftChild);
return 0;
}
//输出:
//A B C D E F G