二叉树创建问题
以下程序的目的是创建一棵二叉树,并显示里面的元素,
不过creat()这个函数的递归调用不知道要怎么去控制才会让它停止,请高手指教!
具体代码如下所示:
#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);}
#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
[解决办法]
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