当前位置:文档之家› 数据结构程序设计报告(平衡二叉树)(内容清晰)

数据结构程序设计报告(平衡二叉树)(内容清晰)

数学与计算机科学学院数据结构程序设计报告
平衡二叉树
学生姓名:
学号:
班级:
指导老师:
报告日期:
1.题目与要求
1). 问题的提出
编写已个平衡二叉树,主要是对插入一个元素导致树不平衡的情况进行平衡化处理以及相关的处理。

2)设计的知识点
队列的插入,删除,二叉树的建立于销毁,平衡树的平衡化,以及C语言中基础应用于结构等。

3)功能要求
(1).通过不断插入的方式创建一棵平衡二叉树,包括输入结点的关键字和相关信息。

(2)按要求输出创建的平衡二叉树结点,包括顺序(中序)输出和按层次输出。

(3)插入新增的结点,若结点不存在则插入平衡二叉树,并进行相关调整。

(4)销毁二叉树。

(5)退出
菜单界面如下:
2.功能设计
算法设计
选择创建平衡二叉树后,利用循环不断插入结点,并进行调整,当输入节点为0时停止进入菜单界面。

在平横二叉树排序树BSTree上插入一个新的数据元素e的递归算法可如下描述:
(1)若BSTree为空树,则插入一个数据元素为e的新结点作为BSTree的根结点,树的深度增1;
(2)若e的关键字和BSTree的根节点的关键字相等,则不进行插入;
(3)若e的关键字小于BSTree的根结点的关键字,而且在其左子树中不存在和e形同的关键字的结点,则将e插入在其左子树
上,并且当插入之后的左子树的深度加1时,分别就下列不同
情况处理之:
a.BSTree的跟结点的平衡因子为-1(右子树的深度大于左子树
的深度):则将跟结点的平衡因子更改为0,BBST的深度不
变;
b.BBST的根结点的平衡因子为0(左,右子树的深度相等):
则将根结点的平衡因子更改为1,BBST的深度增1;
c.BBST的根结点的平衡因子为1(左子树的深度大于右子树
的深度):若BBST的左子树根结点的平衡因子为1,则需进
行向左旋平衡处理,并且在右旋之后,将根节点和其右子树
根节点的平衡因子更改为0,树的深度不变;
若BBST的左子树根结点的平衡因子为-1,则需进行向左,向
右的双向旋转平衡处理,并且在旋转处理之后,修改根结点
和其左右子树的平衡因子,数的深度不变;
(4)若e的关键字大于BBST的根结点的关键字,而且在BBST的右子树中不存在和e有相同的关键字的的节点,则将e插入在
BBST的右子树上,并且当插入之后的右子树深度增加(+1)
时,分别就不同情况处理之。

3.详细设计
1)结点类型定义:
typedef struct ElemType{
KeyType Key; //键值类型
char info[20];
}ElemType;
Typedef struct BSTNode{
ElemType data;
int bf ; //结点的平衡因子。

相关主题