第一棵完全二叉树与树的输入


啊,仿照数据结构上的二叉树递归写法根本实现不了,最后发现原来是要传递指针的呀,该死!还要注意形参与实参的区别,用于统计的数应该以指针的形式直接访问内存修改数据,而不是用形参。

无论如何,我实现了自己的第一棵完全二叉树及树的输入,嘻嘻嘻。下面放上代码(很烂)。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define status int
typedef struct Tree{
    char data;
    struct Tree *lchild;
    struct Tree *rchild;
}Tree,*tree;
tree CreatBiTree(char * string,int *p,tree t){
    if(*p>=strlen(string)) return NULL;
    if(string[*p]==' ')  return NULL;
    else{
        t=(Tree*)malloc(sizeof(Tree));
        t->data=string[*p];
        (*p)++;
        t->lchild=CreatBiTree(string, p, t->lchild);
        (*p)++;
        t->rchild=CreatBiTree(string, p, t->rchild);
    }
    return t;
}
status printTree(tree t){
    if(t==NULL) {
        printf("null ");
        return 0;
    }
    printf("%c ",t->data);
    printTree(t->lchild);
    printTree(t->rchild);
    return 0;
}
int main() {
    tree root;
    int *p;
    p=(int*)malloc(sizeof(int));
    *p=0;
    char * test;
    test=(char*)malloc(100* sizeof(char));
    gets(test);
    root=CreatBiTree(test,p,root);
    printf("root:      %c \nfull tree: ",root->data);
    printTree(root);
    printf("\np's trace: %d",*p);
    return 0;
}

《“第一棵完全二叉树与树的输入”》 有 1 条评论