?对给定的整数序列,建立一棵二叉排序树,并按中序遍历输出树中结点。用C语言编一程序怎么实现?

呆瓜 2012-06-01 11:24:51
?对给定的整数序列,建立一棵二叉排序树,并按中序遍历输出树中结点。用C语言编一程序怎么实现?
...全文
1190 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
呆瓜 2012-06-04
  • 打赏
  • 举报
回复
谢谢仁兄出手相助!
SaintTinyBoy 2012-06-02
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
int data;
struct node *lchild,*rchild;
}BSTNode;
BSTNode *insert(BSTNode *t,BSTNode *s)
{
BSTNode *p,*q; //p指向欲插入的节点,q指向p节点的父节点
if(t==NULL) return s;
p=t; //p指向根节点
while(p) //使q成为s的父节点,p指向s的位置
{
q=p;
if(s->data==p->data)
{
return t;
}
if(s->data >p->data)
{
p=p->rchild;
}
else
p=p->lchild;
}
if(s->data >q->data)
{
q->rchild=s;
}
else
q->lchild=s;
return t;
}
BSTNode *create()
{
BSTNode *t,*s;
int e;
t=NULL;
scanf("%d",&e);
while(e!=-1)
{
BSTNode *s=(BSTNode *)malloc(sizeof(BSTNode));
s->lchild =NULL;
s->rchild =NULL;
s->data =e;
t=insert(t,s);
scanf("%d",&e);
}
return t;
}
void InOrder(BSTNode *t)
{
if(t)
{
InOrder(t->lchild );
printf("%d,",t->data );
InOrder(t->rchild );
}
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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