| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1378 人关注过本帖
标题:数据结构关于二叉树建立及遍历(用C语言)
取消只看楼主 加入收藏
nicknickwang
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-5
收藏
 问题点数:0 回复次数:0 
数据结构关于二叉树建立及遍历(用C语言)
编写一个主函数,实现以下函数的所有功能 。。。


可按如下格式定义二叉树的链式存储结构:
typedef struct btreenode
{datatype data;
struct btreenode *lchild;
struct btreenode *rchild;
}bnode;




模块划分:(1)creat( )函数:建立只有根结点的二叉树
(2)insertL ( )函数:结点作为左孩子插入二叉树
(3)insertR ( )函数:结点作为右孩子插入二叉树
(4)preorder ( )函数:前序遍历
(5)inorder ( )函数:中序遍历
(6)postorder( )函数:后续遍历





bnode *create(datatype x, bnode *lbt, bnode *rbt)
{ bnode *p;
if((p=( bnode * )malloc(sizeof(bnode)))==NULL)
return NULL;
p->data=x;
p->lchild=lbt;
p->rchild=rbt;
return p; }
/*结点作为左孩子插入二叉树*/
bnode *insertL(datatype x, bnode *Parent)
{ bnode *p;
if((p=( bnode * )malloc(sizeof(bnode)))==NULL)
return NULL;
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
Parent->lchild=p;
return p; }
/*结点作为右孩子插入二叉树*/
bnode *insertR(datatype x, bnode *Parent)
{ bnode *p;
if((p=( bnode * )malloc(sizeof(bnode)))==NULL)
return NULL;
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
Parent->rchild=p;
return p; }
/*前序遍历*/
void preorder(bnode *bt)
{ printf(" %d ",bt->data);
if(bt->lchild!=NULL) preorder(bt->lchild);
if(bt->rchild!=NULL) preorder(bt->rchild); }
/*中序遍历*/
void inorder(bnode *bt)
{ if(bt->lchild!=NULL) inorder(bt->lchild);
printf(" %d ",bt->data);
if(bt->rchild!=NULL) inorder(bt->rchild); }
/*后序遍历*/
void postorder(bnode *bt)
{ if(bt->lchild!=NULL) postorder(bt->lchild);
if(bt->rchild!=NULL) postorder(bt->rchild);
printf(" %d ",bt->data); }


其实是C的问题,我的指针学的不太好,高手指教/
搜索更多相关主题的帖子: 二叉树 遍历 数据结构 C语言 
2007-09-30 14:53
快速回复:数据结构关于二叉树建立及遍历(用C语言)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030981 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved