资源简介
广工数据结构课程设计实验-二叉树的实现(代码+实验报告+运行程序)包含二叉树的基本操作
广工数据结构课程设计实验-二叉树的实现(代码+实验报告+运行程序)包含二叉树的基本操作
代码片段和文件信息
#include “StackAndQueue.h“
Status InitBiTree(BiTree &T){ //创建一棵空二叉树
T=NULL;
return OK;
}
BiTree MakeBiTree(TElemType e BiTree L BiTree R) { //创建一棵二叉树T,其中根结点的值为eL和R分别作为左子树和右子树
BiTree T;
T = (BiTNode *) malloc (sizeof(BiTNode)) ;
if(T==NULL) return NULL;
T->data = e;
T->lchild = L;
T->rchild = R;
return T;
}
BiTree CreateBiTree(char *definition int &i){ // 按definition先序构造二叉树的二叉链表,i为definition的当前位标,初值为0
BiTree T;
TElemType c = definition[i++];
if(‘#‘== c) InitBiTree(T) ; //空树
else{
T=MakeBiTree(cNULLNULL); //构造以c为data域的结点
T->lchild = CreateBiTree(definitioni) ; //构造左子树
T->rchild = CreateBiTree(definitioni) ; //构造右子树
}
return T;
}
TriTree CreateTriTree(char *definitionint &i){ // 按definition先序构造二叉树的三叉链表,i为definition的当前位标,初值为0
TriTree T;
TElemType c = definition[i++];
if(‘#‘==c) T=NULL; //空树
else {
T=(TriTree) malloc(sizeof(TriTNode));
if(T==NULL) return NULL;
T->data = c; //给结点赋值
T->parent=NULL; //根结点无双亲
T->lchild = CreateTriTree(definitioni); //构造左子树
if(T->lchild) T->lchild->parent = T; //如果存在左子树,赋值其双亲值
T->rchild = CreateTriTree(definitioni) ; //构造右子树
if(T->rchild) T->rchild->parent = T; //如果存在右子树,赋值其双亲值
}
return T;
}
void DestroyBiTree(BiTree &T) { //销毁二叉树
if(T!=NULL) {
DestroyBiTree(T->lchild); //用递归的方法销毁二叉树的左子树
DestroyBiTree(T->rchild); //用递归的方法销毁二叉树的右子树
free(T);
T=NULL; //由于free 执行完以后,那数据还存在,还可能被调用,将T设为空 ,就访问不到该内存
}
}
Status BiTreeEmpty(BiTree T) { //二叉树判空,若为空返回TRUE,否则FALSE
if(T==NULL) return TRUE;
else return FALSE;
}
Status BreakBiTree(BiTree &TBiTree &LBiTree &R) { //将一棵二叉树 T 分解成根,左子树和右子树三部分
if(T!=NULL) {
L = T->lchild; //L为原二叉树的左子树
R = T->rchild; //R为原二叉树的右子树
T->lchild = NULL; //将二叉树的根结点的左右子树设为空。
T->rchild = NULL;
return OK;
}
return ERROR; //如果二叉树T为空树
}
Status ReplaceLeft(BiTree &TBiTree <) { //替换左子树。若T非空,则用LT 替换T的左子树,并用LT返回T的原有左子树
BiTree t;
if(T==NULL) return ERROR; //树空
t = T->lchild;
T->lchild = LT; //LT作为T的左子树
LT = t;
return OK;
}
Status ReplaceRight(BiTree &TBiTree &RT) { //替换右子树。若T非空,则用RT 替换T的右子树,并用RT返回T的原有右子树
BiTree t;
if(T==NULL) return ERROR; //树空
t = T -> rchild;
T->rchild = RT; //RT作为T的右子树
RT = t; //RT返回T的先前右子树
return OK;
}
Status CutLeft(BiTree &TBiTree <) { //剪除左子树,若 T非空,则剪除T的左子树,并用LT返回
if(T==NULL) {
LT = NULL; return ERROR; //树空
}
LT = T->lchild; //LT返回T的左子树
T->lchild = NULL; //剪除左子树
return OK;
}
Status CutRight(BiTree &TBiTree &RT) { //剪除右子树,若 T非空,则剪除T的右子树,并用RT返回
if(T==NULL) {
RT = NULL; return ERROR; //树空
}
RT = T->rchild; //RT返回T的右子树
T->rchild = NULL; //剪除右子树
return OK;
}
int BiTreeDepth(BiTree T) { //计算二叉树的深度
int depthLeftdepthRight;
if(T==NULL) return 0;
else{
depthLeft = BiTreeDepth(T->lchild); // 求出左子树的深度
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-09-07 17:59 二叉树的实现\
文件 11000 2016-01-11 20:52 二叉树的实现\BinaryTree.cpp
文件 172323 2016-01-12 16:58 二叉树的实现\BinaryTree.exe
文件 508 2016-01-06 14:22 二叉树的实现\head.h
文件 2502 2016-01-06 14:29 二叉树的实现\StackAndQueue.h
文件 162 2016-09-07 17:59 二叉树的实现\~$实验报告.doc
文件 14205 2016-01-12 16:46 二叉树的实现\测试用例.docx
- 上一篇:基于自适应性BP神经网络的优化算法
- 下一篇:数据库课程设计完整版
评论
共有 条评论