二叉树的遍历

当幸福来敲门1 2016-07-11 10:02:22
这段代码在输出的时候,总是异常,但是我又没找出异常点,希望大家帮忙找一下.




#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;

void CreateBiTree(BiTNode *T);
int PreOrderTraverse(BiTNode *T);

int main(){
BiTNode *T;
CreateBiTree(T);
PreOrderTraverse(T);
}

void CreateBiTree(BiTNode *T){
char value;
printf("请输入结点的值");
scanf("%c",&value);
getchar();
if (value == '0'){
T == NULL;
}else{
T = (BiTNode*)malloc(sizeof(BiTNode));
T->data = value;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}

}

int PreOrderTraverse(BiTNode *T){
if (T == NULL){
return 0;
}else{
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}

...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看来c语言真该好好的复习复习了,谢谢!
小灸舞 版主 2016-07-11
  • 打赏
  • 举报
回复
1.CreateBiTree函数应该传二级指针或者一级指针的引用才行 2.第23行T == NULL;应该是*T = NULL;


#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
	char data;
	struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

void CreateBiTree(BiTNode **T);
int  PreOrderTraverse(BiTNode *T);

int main(){
	BiTNode *T;
	CreateBiTree(&T);
	PreOrderTraverse(T);
}

void CreateBiTree(BiTNode **T){
	char value;
	printf("请输入结点的值");
	scanf("%c", &value);
	getchar();
	if (value == '0'){
		*T = NULL;
	}
	else{
		*T = (BiTNode*)malloc(sizeof(BiTNode));
		(*T)->data = value;
		CreateBiTree(&(*T)->lchild);
		CreateBiTree(&(*T)->rchild);
	}

}

int  PreOrderTraverse(BiTNode *T){
	if (T == NULL){
		return 0;
	}
	else{
		printf("%c", T->data);
		PreOrderTraverse(T->lchild);
		PreOrderTraverse(T->rchild);
	}
}


69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧