首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

二叉树创建有关问题

2012-05-09 
二叉树创建问题以下程序的目的是创建一棵二叉树,并显示里面的元素,不过creat()这个函数的递归调用不知道要

二叉树创建问题
以下程序的目的是创建一棵二叉树,并显示里面的元素,
不过creat()这个函数的递归调用不知道要怎么去控制才会让它停止,请高手指教!
具体代码如下所示:

C/C++ code
#include <stdio.h>#include <malloc.h>typedef struct btnode{    int element;    struct btnode *lchild,*rchild;}Btree;void creat(Btree *BT);void pre(Btree *BT);int main(){    Btree Bt,*BT=&Bt;    creat(BT);    pre(BT);    return 0;}void creat(Btree *BT){    int number;    printf("Please enter numbers:");    scanf("%d",&number);    if(number==0)        BT->element=NULL;    else    BT=(Btree*)malloc(sizeof(Btree));    BT->element=number;    creat(BT->lchild);    creat(BT->rchild);}void pre(Btree *BT){    printf("%d\t",BT->element);    pre(BT->lchild);    pre(BT->rchild);}


[解决办法]
我也刚学数据结构,只能改停,那个高手解决下输出的问题
C/C++ code
#include <stdio.h>#include <malloc.h>typedef struct btnode{    int element;    struct btnode *lchild,*rchild;}Btree;void creat(Btree *BT);void pre(Btree *BT);int main(){    Btree BT;    creat(&BT);    pre(&BT);    getch();    return 0;}void creat(Btree *BT){    int number;    printf("Please enter numbers:");    scanf("%d",&number);    if(number==0)        BT->element=NULL;    else    {BT=(Btree*)malloc(sizeof(Btree));    BT->element=number;    creat(BT->lchild);    creat(BT->rchild);}}void pre(Btree *BT){    if(BT->element==NULL)    {return;}    printf("%d\t",BT->element);    pre(BT->lchild);    pre(BT->rchild);}
[解决办法]
你们的想法有点错误。比如: Btree BT; creat(&BT); BT->element=NULL;
看下我以前写的一个二叉树。
http://blog.csdn.net/w170532934/article/details/7089656
[解决办法]
C/C++ code
void creat(Btree **BT);void pre(Btree *BT);int main(){    Btree *BT;    creat(&BT);    pre(BT);    getch();    return 0;}void creat(Btree **BT){        int number;    printf("Please enter numbers:");    scanf("%d",&number);    if(number==0)        (*BT)=NULL;    else    {(*BT)=(Btree*)malloc(sizeof(Btree));    (*BT)->element=number;    creat(&(*BT)->lchild);    creat(&(*BT)->rchild);}}void pre(Btree *BT){    if(BT==NULL)    {return;}    printf("%d\t",BT->element);    pre(BT->lchild);    pre(BT->rchild);}Please enter numbers:1Please enter numbers:2Please enter numbers:0Please enter numbers:0Please enter numbers:3Please enter numbers:0Please enter numbers:01       2       3       Press any key to continue 

热点排行