二叉树的遍历方式(C语言)
2023-09-27 14:26:28 时间
简介:
二叉树的遍历分为前序遍历、中序遍历和后序遍历。其存储结构分为顺序结构(数组)和链式结构。
顺序结构:
利用数组存储二叉树的结点的数据,其结点的父子关系是通过他们的数组的位置来反映的。顺序结构通常对与的是完全二叉树。存储的顺序是从上到下、从左到右。优点:存储空间利用率高、计算简单。缺点:不易实现增加、删除操作。
程序代码:
#include<stdio.h>
int a[101];
int n;
void qian(int a[],int i)
{
if(i>n)
return;
printf("%d ",a[i]);
qian(a,i*2);
qian(a,i*2+1);
}
void zhong(int a[],int i)
{
if(i>n)
return;
zhong(a,i*2);
printf("%d ",a[i]);
zhong(a,i*2+1);
}
void hou(int a[],int i)
{
if(i>n)
return;
hou(a,i*2);
hou(a,i*2+1);
printf("%d ",a[i]);
}
int main()
{
int i,m,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
a[i]=i;
printf("输入的数组为:\n");
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n输入前序遍历的数组:\n");
qian(a,1);
printf("\n输出中序遍历的数组:\n");
zhong(a,1);
printf("\n输出后序遍历的数组:\n");
hou(a,1);
return 0;
}
链式结构:
链式结构的存储是利用链表,二叉树的指针至少包括三部分:数据域、左指针域和右指针域。它的优点是节省空间但是操作麻烦。
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int date;
struct node *lift,*right;
};
typedef struct node LNode,*Link;
void creat(Link *head);
void qian(Link head);
void zhong(Link head);
void hou(Link head);
int main()
{
Link head;
head=NULL;
printf("输入二叉树链式:\n");
creat(&head);
printf("输出前序遍历:\n");
qian(head);
printf("\n输出中序遍历:\n");
zhong(head);
printf("\n输出后序遍历:\n");
hou(head);
return 0;
}
void creat(Link *head)
{
int a;
scanf("%d",&a);
if(a==0)
*head=NULL;
else
{
*head=(Link)malloc(sizeof(LNode));
(*head)->date=a;
creat(&(*head)->lift);
creat(&(*head)->right);
}
}
void qian(Link head)
{
if(head!=NULL)
{
printf("%d ",head->date);
qian(head->lift);
qian(head->right);
}
}
void zhong(Link head)
{
if(head!=NULL)
{
zhong(head->lift);
printf("%d ",head->date);
zhong(head->right);
}
}
void hou(Link head)
{
if(head!=NULL)
{
hou(head->lift);
hou(head->right);
printf("%d ",head->date);
}
}
相关文章
- OC语言--内存管理
- [ 数据结构--C语言 ]不收藏必后悔系列--二叉树初阶
- C++:C语言实现HTTP的GET和POST请求
- 《21天学通C语言(第6版•修订版)》一1.2 为何要使用C语言
- 【C语言】简单模拟用户登录场景
- 基于C语言开发(控制台)通讯录管理程序【100010030】
- 数据结构队列顺序存储代码实现(C语言)
- (第22列)C语言典型列题:删除字符串中指定的字母。
- C语言知识点汇总之一
- 【C语言进阶】深度解析数据在内存中的存储
- 计数排序——C语言实现
- 纯C语言实现简单封装继承机制
- C语言typedef struct具体解释
- 《数据结构》树和二叉树代码整理(C语言实现)
- 二叉树C语言
- C语言递归实现二叉树的先序、中序、后序遍历
- 1049 数列的片段和 (20 分)C语言