#include<iostream>
typedef int datatype ;
struct node
{
datatype data;
node *llink,*rlink;
};
typedef node *pointer;
/*创建二叉树*/
void creat(pointer& t,
datatype x,pointer lp,pointer rp)
{
t=new node;
t->data=x;
t->llink=lp; t->rlink=rp;
}
/*层次遍历*/
void levelorder(pointer root)
{
/*队列*/
pointer Q[8];/*队列需要的长度至少为元素个数+1,否则会溢出*/
int f,r;/*队首和队尾指针*/
f=1;r=1;
pointer p=root;
if(p) Q[r++]=p;
while(f!=r)
{
p=Q[f++];/*读取队首元素*/
printf("%d ",p->data);/*访问根结点*/
if(p->llink)/*左孩子进入队列*/
Q[r++]=p->llink;
if(p->rlink)/*右孩子进入队列*/
Q[r++]=p->rlink;
}
}
/*先序遍历*/
void preorder(pointer p)
{
if(p)
{
printf("%d ",p->data);
preorder(p->llink);
preorder(p->rlink);
}
};
void main()
{
pointer p1,p2,p3;
pointer root;
/*创建二叉树*/
creat(p1,6,NULL,NULL);
creat(p2,7,NULL,NULL);
creat(p3,5,p1,p2);
creat(p1,4,NULL,NULL);
creat(p2,2,p1,p3);
creat(p3,3,NULL,NULL);
creat(root,1,p2,p3);
printf("\n 层次遍历:");/*显示层次遍历结果*/
levelorder(root);
printf("\n");
printf("\n 先序遍历:");/*显示先序遍历结果*/
preorder(root);
}
- 1
- 2
前往页