A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 瑞雪雄起 中级黑马   /  2015-9-28 16:41  /  172 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
char data;
Node *lchild;
Node *rchild;
}TNode;
typedef struct Stack
{
int top;
TNode *data[15];
}Stack;
typedef struct QU
{
int first;
int last;
TNode *data[15];
}QU;
void list(TNode *root)
{
QU *qu=(QU *)malloc(sizeof(QU));
qu->first=-1;
qu->last =-1;
qu->first++;
qu->data[qu->first]=root;
TNode *p;
while(qu->first!=qu->last)
{
qu->last++;
p=qu->data[qu->last];
printf("%c",p->data);
if(p->lchild!=NULL)
{
qu->first++;
qu->data[qu->first]=p->lchild;
}
if(p->rchild!=NULL)
{
qu->first++;
qu->data[qu->first]=p->rchild;
}
}
printf("\n");
}
TNode * createTree()
{
char *str="A(B(D(H,),E(,I)),C(F,G(J,)))";
printf("二叉树的序列:%s\n",str);
TNode *root=NULL;
TNode *node;
int tag;
Stack *s=(Stack *)malloc(sizeof(Stack));
s->top=-1;
char ch=*str;

while(ch!='\0')
{

switch(ch)
{
case '(': {tag=0;s->top++;s->data[s->top]=node;break;}
case ')': {s->top--;break;}
case ',': {tag=1;break;}
default:
{
node=(TNode *)malloc(sizeof(TNode));
node->data=ch;
node->lchild =NULL;
node->rchild =NULL;
if(root==NULL)
{
root=node;
}
    switch(tag)
        {
    case 0:{s->data[s->top]->lchild=node;break;}
    case 1:{s->data[s->top]->rchild=node;break;}
        }
        break;
}
}
ch=*(++str);
}
return root;
}
void main()
{
TNode *root=createTree();
list(root);

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马