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

发布网友 发布时间:2022-04-25 12:42

我来回答

2个回答

热心网友 时间:2023-05-02 08:59

下面这个算法能帮你:
/*二叉树的建立与遍历

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

实现二叉树的以下运算

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

选择一种遍历方式(先序、中序、后序)遍历这棵二叉树。 */
#include <stdio.h>
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);
}
}

热心网友 时间:2023-05-02 08:59

Status Print(BiTree* &T, int layer)
{
if (!T)
{
return OK;
}
else
{
Print(T->Rightchild, layer + 1);
for (int i = 0; i < layer; ++i)
{
PrintChar(' ');
}
PrintData(T);
PrintChar('\n');
Print(T->Leftchild, layer + 1);
}
}

layer代表的是递归调用的层次,这个是比较简单算法,空间复杂度为O(depth),depth是二叉树的深度,时间复杂度为O(n),n是二叉树结点的个数。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com