标题:数据结构关于二叉树建立及遍历(用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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-174310-1-1.html




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

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