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