二叉树的创建
typedef struct node
{
ElemType data;
struct node *lchild;//指向左孩子的节点
struct node *rchild;//指向右孩子的节点
}BTNode;#include "btree.h"
void CreateBTNode(BTNode *&b,char *str)
{
BTNode *St[MaxSize],*p;
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=NULL;p->rchild=NULL;
if(b==NULL)//若尚未建立根节点
{
b=p; //*p为二叉树的根节点
}
else //已建立二叉树的根节点
{
switch(k)
{
case 1:St[top]->lchild=p;break;
case 2:St[top]->rchild=p;break;
}
}
}
j++;
ch=str[j];
}
}
标签:case,break,ch,建立,top,BTNode,二叉树,节点
From: https://blog.51cto.com/u_16099425/6247413