数据结构——树的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 设计模式——工厂模式
