数据结构——树的C语言实现

文章目录

        • 1.什么是树?
        • 2.如何判断是否是树?
        • 3.树的基本术语
        • 4.树的表示方法
        • 5.二叉树的定义
        • 6.特殊二叉树
        • 7.二叉树的性质
        • 8.二叉树的抽象数据类型定义
        • 9.二叉树的存储结构
          • 9.1顺序存储
          • 9.2 链表存储
        • 10.二叉树的遍历
          • 10.1 二叉树的遍历方法
            • 1.递归遍历
            • 2.层序遍历
          • 10.2 二叉树遍历的C语言实现
            • 1.递归遍历的实现
            • 2.层序遍历的实现

1.什么是树?

数据结构——树的C语言实现_第1张图片

2.如何判断是否是树?

数据结构——树的C语言实现_第2张图片

3.树的基本术语

数据结构——树的C语言实现_第3张图片数据结构——树的C语言实现_第4张图片

4.树的表示方法

数据结构——树的C语言实现_第5张图片数据结构——树的C语言实现_第6张图片

5.二叉树的定义

数据结构——树的C语言实现_第7张图片

6.特殊二叉树

数据结构——树的C语言实现_第8张图片

7.二叉树的性质

数据结构——树的C语言实现_第9张图片

8.二叉树的抽象数据类型定义

数据结构——树的C语言实现_第10张图片

9.二叉树的存储结构

9.1顺序存储

数据结构——树的C语言实现_第11张图片
数据结构——树的C语言实现_第12张图片

9.2 链表存储

数据结构——树的C语言实现_第13张图片

10.二叉树的遍历

10.1 二叉树的遍历方法
1.递归遍历

数据结构——树的C语言实现_第14张图片

2.层序遍历

数据结构——树的C语言实现_第15张图片在这里插入图片描述

10.2 二叉树遍历的C语言实现
1.递归遍历的实现
#include
#include

#define ElementType int

typedef struct TreeNode *BinTree;
struct TreeNode{
     
        ElementType Data;
        BinTree Left;
        BinTree Right;
};

//1.先序遍历
void PreOrderTraversal(BinTree BT)
{
     
        if(BT){
     
                printf("%d  ",BT->Data);
                PreOrderTraversal(BT->Left);
                PreOrderTraversal(BT->Right);
        }
}

//2.中序遍历
void InOrderTraversal(BinTree BT)
{
     
        if(BT){
     
                InOrderTraversal(BT->Left);
                printf("%d  ",BT->Data);
                InOrderTraversal(BT->Right);
        }
}

//3.后序遍历
void PostOrderTraversal(BinTree BT)
{
     
        if(BT){
     
                PostOrderTraversal(BT->Left);
                PostOrderTraversal(BT->Right);
                printf("%d  ",BT->Data);
        }
}

//4.初始化树
BinTree MakeEmpty()
{
     
        BinTree BT;
        BT=(BinTree)malloc(sizeof(struct TreeNode));
        BT->Left=NULL;
        BT->Right=NULL;
        return BT;
}
  
int main()
{
     
        int i;
        BinTree BT[7];
        for(i=0;i<7;i++){
     
                BT[i]=MakeEmpty();
                BT[i]->Data=i;
        }
        BT[0]->Left=BT[1];
        BT[0]->Right=BT[2];

        BT[1]->Left=BT[3];
        BT[1]->Right=BT[4];

        BT[2]->Left=BT[5];
        BT[2]->Right=BT[6];

        PreOrderTraversal(BT[0]);
        printf("\n");
        printf("%d  %d\n",BT[0]->Data,BT[0]->Left->Data);
}
2.层序遍历的实现

数据结构——树的C语言实现_第16张图片

你可能感兴趣的:(数据结构,二叉树,链表,数据结构)