思路
利用队列,让根节点先进队列,然后只要队列不空,就把队列的队头不为空的左右子树入队,然后让刚才的队头出队并且输出。
二叉树定义
typedef struct bitnode
{
struct bitnode *lchild;
struct bitnode *rchild;
int data;
} BiTNode,*BiTree;
这里说明一下 BiTNode * BiTree是一样的,因为树本来就是递归结构,只不过以后我们好区分树结点和树
如果要定义树的节点 BiTNode * node,声明树则用BiTree bt即可
C++实现
void cengxubianli(BiTree bt)
{
queue<BiTNode*> q;
q.push(bt);
int cnt=1;
while(!q.empty())
{
if(q.front()->lchild!=NULL)
{
q.push(q.front()->lchild);
}
if(q.front()->rchild!=NULL)
{
q.push(q.front()->rchild);
}
printf("%d ",q.front()->data);
q.pop();
}
}