酱鸭 2017-04-23 03:16 采纳率: 50%
浏览 5845

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

一串字符串: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条回答 默认 最新

  • 内核之道 PostgreSQL领域优质创作者 2017-04-23 03:35
    关注

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

    
    
    评论

报告相同问题?