• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C语言按层次遍历二叉树算法

OC/C/C++ 水墨上仙 2028次浏览

C语言按层次遍历二叉树算法

#define MaxSize 1000
typedef char ElemType; 
typedef struct node 
{
	ElemType data;
	struct node *lchild;
	struct node *rchild;
} BTNode;
//创建二叉树
void CreateBTNode(BTNode *&b,char *str)
{
	BTNode *St[MaxSize],*p=NULL;
	int top=-1,k,j=0;
	char ch;
	b=NULL;
	ch=str[j];
	while(ch!='\0')
	{
		switch(ch)
		{
		case '(':top++;St[top]=p;k=1;break;
		case ')':top--;break;
		case ',':k=2;break;
		default:p=(BTNode *)malloc(sizeof(BTNode));
			p->data=ch;p->lchild=p->rchild=NULL;
			if(b==NULL) b=p;
			else
			{
				switch(k)
				{
				case 1:St[top]->lchild=p;break;
				case 2:St[top]->rchild=p;break;
				}    
			}    
		}    
		j++;
		ch=str[j];
	}    
}
//层次遍历算法 
void LevelOrder(BTNode *b)
{
	BTNode *p;
	BTNode *qu[MaxSize];
	int front,rear;
	front=rear=-1;
	rear++;
	qu[rear]=b;
	while(front != rear)
	{
		front=(front+1)%MaxSize;
		p=qu[front];
		printf("%c ",p->data);
		if(p->lchild!=NULL)
		{
			rear=(rear+1)%MaxSize;
			qu[rear]=p->lchild;
		}
		if(p->rchild!=NULL)
		{
			rear=(rear+1)%MaxSize;
			qu[rear]=p->rchild;
		}
	}
}
//主函数
int main()
{
	BTNode *b,*h;
	char s[MaxSize] = "A(B(D(,G)),C(E,F))";
	CreateBTNode(b,s);
	printf("层次遍历算法的访问次序为:");
	LevelOrder(b);
	printf("\n请输入二叉树括号表示法字符串:\n");
	return 0;
}  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C语言按层次遍历二叉树算法
喜欢 (0)
加载中……