BinTNode* CreatTree(char str[]){
BinTNode* st[100]; //存放父结点的顺序栈;
BinTNode *p=NULL,*b=NULL; //p为存放结点的临时指针,b作为返回的临时指针
int top-1,j=0,k; //top=-1,作为栈的索引,k作为判断是左子树,还是右子树;
char 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 = (BinTNode*)malloc(sizeof(BinTNode));
p->data = str[j];
p->lchild = NULL;
p->rchild = NULL;
if(b == NULL)
b=p;
else{
switch(k){
case 1:st[top]->lchild = p;
case 2:st[top]->rchild = p;
}
}
}
j++;ch = str[j];
}
return b;
}
广义表表示二叉树结构生成二叉链表的算法
最新推荐文章于 2024-04-19 15:40:36 发布