输出二叉树树形的数据结构程序代码怎么写

论坛 期权论坛 期权     
李侠青   2018-4-26 14:00   2941   1
分享到 :
0 人收藏

1 个回复

正序浏览
2#
cindywan806  1级新秀 | 2018-4-30 01:55:35 发帖IP地址来自
下面这个算法能帮你:
/*二叉树的建立与遍历

  以二叉链表作为存储结构,定义二叉树类型 bitree;

  实现二叉树的以下运算

  建立 create( ) 输入二叉树的结点元素,建立二叉链表。

  选择一种遍历方式(先序、中序、后序)遍历这棵二叉树。 */
#include
struct node
{
char data;
struct node *lchild,*rchild;
};

/****************************二叉树的创建*****************************/
struct node *creat_bintree(struct node *t)
{
char ch;
printf("\n 按照先序序列输入二叉树的每个值,空格代表空树:");
ch=getchar();
getchar();
if( ch==' ')
  t=NULL;
else
{
  t = (struct node *)malloc(sizeof(struct node));
  t->data=ch;
  t->lchild = creat_bintree( t->lchild );
  t->rchild = creat_bintree( t->rchild );
}
return(t);
}
/****************************二叉树的先序遍历*****************************/
void preorder(struct node *t )
{
if (t)
{
  putchar(t->data);
  preorder(t->lchild);
  preorder(t->rchild);
}
}
/****************************二叉树的中序遍历*****************************/
void inorder(struct node *t )
{
if (t)
{
  inorder(t->lchild);
  putchar(t->data);
  inorder(t->rchild);
}
}
/****************************二叉树的后序遍历*****************************/
void postorder(struct node *t )
{
if (t)
{
  postorder(t->lchild);
  postorder(t->rchild);
  putchar(t->data);
}
}

void main()
{
struct node *t;
t=creat_bintree(t);
if (t)
{
  printf("\n after preorder:\n");
  preorder(t);
  printf("\n after inorder:\n");
  inorder(t);
  printf("\n after postorder:\n");
  postorder(t);
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP