二叉树的创建:根据一串字符串用先序创建二叉树

一串字符串:ABC空格空格DE空格GF空格空格空格
用先序创建二叉树。

 #include <stdio.h>
#include <stdlib.h>
#define maxsize 100
//递归法创建二叉树
//规则:对一串字符串挨个读取遇到空格完成对当前树的创建
typedef struct BimaryTree {
    char data;
    struct BimaryTree *Lchild;
    struct BimaryTree *Rchild;
}BiTree;
int count = 0;//显示节点的个数
char str[maxsize];
void creatTree(BiTree *&T) {
    char *ch=str;
    int i = 0;
    if (ch[i] == ' ') {
        T = NULL;
    }
    else {
        if (!(T = (BiTree *)malloc(sizeof(BimaryTree)))) {//问题就在这if内的语句无法执行 各位神我这语句有什么问题吗?
            T->data = ch[i];
            i++; count++;
            creatTree(T->Lchild);
            creatTree(T->Rchild);
        }
    }
    return;
}
int main() {
    BiTree *T;
    printf("请输入一串字符串!完成对二叉树的创建!");
    scanf("%s", str);
    creatTree(T);
    printf("%d", count);
    system("pause");
    return 0;
}

2个回答

 void creatTree(BiTree *&T) ;这里不需要&
m0_37131359
酱鸭 回复lixiaogang_theanswer: 引用不用的话。树的根怎么传回去?
3 年多之前 回复

``
楼主, char *ch=str;若想创建一个二叉树,你需要把str作为参数传入函数中,void creatTree(BiTree *&T)可以改为void creatTree(BiTree *&t, char *str);
把字符串的地址传入进来,否则,函数里面的值是一个随机值;


m0_37131359
酱鸭 回复lixiaogang_theanswer: 这样改的话。下面的递归函数的参数怎么改。还是传str?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐