您的位置:逆风者 数据结构 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:39 来源:未知

教学目的: 掌握二叉树的两种存储结构

教学重点: 链式存储结构

教学难点: 链式存储二叉树的基本操作

授课内容:

一、复习二叉树的定义

逆风编程精品

二叉树的基本特征:每个结点的度不大于2。

二、顺序存储结构

#define MAX_TREE_SIZE 100

typedef TElemType SqBiTree[MAX_TREE_SIZE];

SqBiTree bt;

结点编号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
结点值
1
2
3
4
5
0
0
0
0
6
7
0
0
0
0

第i号结点的左右孩子一定保存在第2i及2i 1号单元中。

缺点:对非完全二叉树而言,浪费存储空间

三、链式存储结构

一个二叉树的结点至少保存三种信息:数据元素、左孩子位置、右孩子位置

对应地,链式存储二叉树的结点至少包含三个域:数据域、左、右指针域。

也可以在结点中加上指向父结点的指针域P。

对结点有二个指针域的存储方式有以下表示方法:

typedef struct BiTNode{

TElemType data;

struct BitNode *lchild,*rchild;

}BiTNode,*BiTree;

基于该存储结构的二叉树基本操作有:

Status CreteBiTree(BiTree &T);

//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,

//构造二叉链表表示的二叉树T。

Status PreOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//先序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败

Status InOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//中序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败

Status PostOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//后序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败

Status LevelOrderTraverse(BiTree T,Status(*Visit)(TElemType e));

//采用二叉链表存储结构,Visit是对结点操作的应用函数

//层序遍历二叉树T,对每个结点调用函数Visit一次且仅一次

//一旦visit()失败,则操作失败

四、总结本课内容

顺序存储与链式存储的优缺点。

相关文章

C语言完成一个学生成绩管理程序
数据结构教程 第二十九课 静态查找表(一)
数据结构教程 第十三课 队列
数据结构教程 第四课 算法效率的度量和存储
数据结构教程 第二十七课 实验六 二叉树实验
数据结构教程 第十九课 实验四 串的实现实验
数据结构教程 第三十五课 实验七 查找
数据结构教程 第三课 算法及算法设计要求
数据结构教程 第九课 循环链表与双向链表
数据结构教程 第十四课 串的定义
数据结构教程 第三十九课 索引文件
五子棋算法
数据结构教程 第一课 数据结构的基本概念和
数据结构教程 第三十三课 哈希表(二)
数据结构教程 第十七课 实验三:栈的表示与
数据结构教程 第八课 线性表的链式表示与实
数据结构教程 第十五课 串的表示和实现
数据结构教程 第三十四课 插入排序,快速排
数据结构教程 第十八课 数组的顺序表示与实

相关评论


本文章所属分类:首页 数据结构

  热门关键字: