关于二叉树的问题

jznsmail 2004-04-08 09:48:31
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

typedef struct tree
{
int data;
struct tree *lchild;
struct tree *rchild;
}tree;

void BuildTree(tree *Btree,int Data)
{
tree *Temp;
tree *NewTree;
tree *BackTemp;
if(Btree!=NULL)
{

Temp=Btree;
while(Temp!=NULL)
{
BackTemp=Temp;
if(Data<(Temp->data))
{
Temp=Temp->lchild;
}
else
{
Temp=Temp->rchild;
}
}
if(Data<(BackTemp->data))
{
NewTree=(tree *)malloc(sizeof(tree));
NewTree->data=Data;
NewTree->lchild=NULL;
NewTree->rchild=NULL;
BackTemp->lchild=NewTree;
}
else
{
NewTree=(tree *)malloc(sizeof(tree));
NewTree->data=Data;
NewTree->lchild=NULL;
NewTree->rchild=NULL;
BackTemp->rchild=NewTree;
}

}
else
{
Btree=(struct tree *)malloc(sizeof(struct tree));
Btree->data=Data;
Btree->lchild=NULL;
Btree->rchild=NULL;
}
}

void DisplayTree(tree *Btree)
{
if(Btree!=NULL)
{
printf("%d ",Btree->data);
DisplayTree(Btree->lchild);
DisplayTree(Btree->rchild);
}
else
{
printf("This is NULL Tree!!!");
}
}


int main(int argc,char **argv)
{
tree *Root=NULL;
BuildTree(Root,10);
BuildTree(Root,43);
BuildTree(Root,1);
BuildTree(Root,34);
BuildTree(Root,75);
DisplayTree(Root);
return 0;
}
为什么我的这个程序无法正确建立树和偏历呢?
...全文
38 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
积木 2004-04-08
  • 打赏
  • 举报
回复
给你一个思路,创建树也是一个递归的过程啊,也可以仿照你的
void DisplayTree(tree *Btree)
{
if(Btree!=NULL)
{
printf("%d ",Btree->data);
DisplayTree(Btree->lchild);
DisplayTree(Btree->rchild);
}
else
{
printf("This is NULL Tree!!!");
}
}
这样来写,所多的就是判断那个节点是不是需要创建新的节点

69,368

社区成员

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

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