题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印,例如
8
6 10
5 7 9 11
依次打印:8,6,10,5,7,9,11
理解:层次遍历二叉树,借助队列,先将根入队列,根出列,打印根的值,并把根的左孩子和右孩子入队列,再出列,打印,入列(根的左孩子的 左孩子和右孩子),.......
二叉树结点的定义:
struct BinaryTreeNode
{
int data;
BinaryTreeNode* lchild;
BinaryTreeNode* rchild;
}
伪代码:
void PrintTree(BinaryTreeNode* pRoot)
{
if(pRoot == NULL)
return;
SeQueue s;
InitQueue(s);
EnQueue(pRoot);
while(!QueueEmpty(s))
{
BinaryTreeNode *p;
p=DeQueue(s);
printf("%d ",p->data);
if(p->lchild)
EnQueue(p->lchild);
if(p->rchild)
EnQueue(p->rchild);
}
}