数据结构——树的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.层序遍历的实现
下一篇:
			            Java 设计模式——工厂模式 
			          
			        