啊,仿照数据结构上的二叉树递归写法根本实现不了,最后发现原来是要传递指针的呀,该死!还要注意形参与实参的区别,用于统计的数应该以指针的形式直接访问内存修改数据,而不是用形参。
无论如何,我实现了自己的第一棵完全二叉树及树的输入,嘻嘻嘻。下面放上代码(很烂)。
#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 条评论
小巫,加油!优秀!
哈哈