c语言数据结构:怎么建立一个二叉树?

 我来答
日月星辰92
推荐于2019-11-16 · TA获得超过889个赞
知道答主
回答量:46
采纳率:0%
帮助的人:45.1万
展开全部
只要将一个二叉树用“括号表示法”表示出来,然后,用链式存储结构将其各个结点存储就可以了,也就是输入一个二叉树。最后,用中序遍历输出!
typedef struct node
{ ElemType data;
struct node *lchild,*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') //str未扫描完时循环
{ 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) ///p为二叉树的根结点
b=p;
else //已建立二叉树根结点
{ switch(k)
{
case 1:St[top]->lchild=p;break;
case 2:St[top]->rchild=p;break;
}
}
}
j++;ch=str[j];
}
}
//中序遍历输出;
void InOrder(BTNode *b)
{ if (b!=NULL)
{ InOrder(b->lchild);
printf("%c ",b->data); //访问根结点
InOrder(b->rchild);
}
}
OK!
顺便发一份给你,注意接收!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式