#include#include #include#include
实验5二叉树的基础实验

实验5二叉树的基础实验

ID:25875953

大小:94.00 KB

页数:7页

时间:2018-11-23

实验5二叉树的基础实验_第1页
实验5二叉树的基础实验_第2页
实验5二叉树的基础实验_第3页
实验5二叉树的基础实验_第4页
实验5二叉树的基础实验_第5页
资源描述:

《实验5二叉树的基础实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验五二叉树的基础实验定义二叉树的数据结构并完成建树、删除和添加结点及先序、中序和后序遍历的递归算法#include"stdafx.h"#include#include#include#defineOK1#defineOVERFLOW-2#defineERROR0#defineFALSE0typedefintStatus;typedefstructBiTNode{chardata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;StatusCreateBiTree(BiTree&T){/

2、/按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,//构造二叉链表表示的二叉树T。charch;scanf("%c",&ch);if(ch=='')T=NULL;else{if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW);T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}returnOK;}StatusVisit(chare){printf("%c",e);returnOK;}//先序遍历StatusPreOrderTraverse(BiTree

3、T,StatusVisit(chare)){if(T){if(Visit(T->data))if(PreOrderTraverse(T->lchild,Visit))if(PreOrderTraverse(T->rchild,Visit))returnOK;returnERROR;}elsereturnOK;}//中序遍历StatusInOrderTraverse(BiTreeT,StatusVisit(chare)){if(T){if(PreOrderTraverse(T->lchild,Visit))if(Visit(T->data))if(PreOrderTraverse(T->rch

4、ild,Visit))returnOK;returnERROR;}elsereturnOK;}//后序遍历StatusLastOrderTraverse(BiTreeT,StatusVisit(chare)){if(T){if(PreOrderTraverse(T->lchild,Visit))if(PreOrderTraverse(T->rchild,Visit))if(Visit(T->data))returnOK;returnERROR;}elsereturnOK;}//查找结点(先序查找)StatusPreOrderLook(BiTreeT,charx,BiTree&p){//若二叉

5、树中存在和x相同的元素,则p指向该结点并返回OK,//否则返回FALSEif(T){if(T->data==x){p=T;returnOK;}else{if(PreOrderLook(T->lchild,x,p))returnOK;elsereturn(PreOrderLook(T->rchild,x,p));}}elsereturnFALSE;}StatusPPreOrderLook(BiTreeT,charx,BiTree&p){//若二叉树中存在和x相同的元素,则p指向该结点并返回OK,//否则返回FALSEif(T){if(T->lchild->data==x

6、

7、T->rchild-

8、>data==x){p=T;returnOK;}else{if(PPreOrderLook(T->lchild,x,p))returnOK;elsereturn(PPreOrderLook(T->rchild,x,p));}}elsereturnFALSE;}//释放节点以及节点的子树所占空间intDestroyBiTree(BiTree&T){if(T){if(T->lchild)DestroyBiTree(T->lchild);if(T->rchild)DestroyBiTree(T->rchild);free(T);returnOK;//T=NULL;}returnOK;}//结点的插

9、入StatusInsertNode(BiTree&T,BiTreep,charc){intb;charch;BiTrees=(BiTNode*)malloc(sizeof(BiTNode));printf("输入节点的插入位置为0则插入左节点,为1则插入右节点:");inti;cin>>i;if(T){b=PreOrderLook(T,c,p);if(b==1&&i==0){BiTreeq=p->lchild

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。