• 大小: 72KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签:

资源简介

广工数据结构课程设计实验-二叉树的实现(代码+实验报告+运行程序)包含二叉树的基本操作 广工数据结构课程设计实验-二叉树的实现(代码+实验报告+运行程序)包含二叉树的基本操作

资源截图

代码片段和文件信息

#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

评论

共有 条评论