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