二叉树的遍历方式(C语言)

简介: 二叉树的遍历方式(C语言)

简介:

二叉树的遍历分为前序遍历、中序遍历和后序遍历。其存储结构分为顺序结构(数组)和链式结构。

顺序结构:

利用数组存储二叉树的结点的数据,其结点的父子关系是通过他们的数组的位置来反映的。顺序结构通常对与的是完全二叉树。存储的顺序是从上到下、从左到右。优点:存储空间利用率高、计算简单。缺点:不易实现增加、删除操作。

程序代码:

#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);
  }
}






相关文章
|
4天前
|
C语言
C语言写二叉树
C语言写二叉树
32 0
|
4天前
|
存储 Linux C语言
初识树(c语言)
初识树(c语言)
|
4天前
|
存储 分布式数据库 C语言
二叉树的基本概念(C语言)
二叉树的基本概念(C语言)
|
4天前
二叉树的实现(纯C语言版)
二叉树的实现(纯C语言版)
39 1
|
4天前
|
存储 测试技术 C语言
LeetCode | 100.相同的树(C语言版)
LeetCode | 100.相同的树(C语言版)
25 0
|
6月前
|
程序员 Serverless C语言
29 C语言 - 递归
29 C语言 - 递归
23 0
|
9月前
|
C语言
双链表-纯C语言(代码以及详细解释)下
双链表-纯C语言(代码以及详细解释)
28 0
|
9月前
|
C语言 计算机视觉
双链表-纯C语言(代码以及详细解释)上
双链表-纯C语言(代码以及详细解释)
69 0
|
10月前
|
机器学习/深度学习 存储 C语言
探究C语言中的二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
47 0
|
11月前
|
算法 C语言
初阶C语言:函数递归
C语言知识点函数递归的详细介绍,让你轻松上手函数递归,递归虽好,可不要一直用递归喔!
9029 2