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

1.什么是树?

2.如何判断是否是树?

3.树的基本术语

4.树的表示方法

5.二叉树的定义

6.特殊二叉树

7.二叉树的性质

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

9.二叉树的存储结构

9.1顺序存储
9.2 链表存储

10.二叉树的遍历

10.1 二叉树的遍历方法
1.递归遍历
2.层序遍历
10.2 二叉树遍历的C语言实现
1.递归遍历的实现
#include<stdio.h>
#include<stdlib.h>

#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("
");
        printf("%d  %d
",BT[0]->Data,BT[0]->Left->Data);
}
2.层序遍历的实现
经验分享 程序员 微信小程序 职场和发展