实验四二叉树操作实现

实验四二叉树操作实现

ID:45046366

大小:162.50 KB

页数:7页

时间:2019-11-08

实验四二叉树操作实现_第1页
实验四二叉树操作实现_第2页
实验四二叉树操作实现_第3页
实验四二叉树操作实现_第4页
实验四二叉树操作实现_第5页
资源描述:

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

1、实验四二叉树操作实现实验日期:2017年4月20日实验目的及要求1.熟练掌握树的基本概念、二叉树的基本操作及在链式存储结构上的实现;2.重点掌握二叉树的创建、遍历及求深度等算法;3.掌握运用递归方式描述算法及编写递归C程序的方法,提高算法分析和程序设计能力。实验内容键盘输入一个字符串,利用二叉树前序遍历的结果建成一棵二叉树,并用三种遍历方法打印,比较是否与自己预先想象的相一致。再求树的深度、1度结点数、2度节点数,交换二叉树的左右子树并输出交换后的中序遍历结果验证交换的正确性。找到二叉树中序遍历最后一个结点并输出

2、结点值。二叉树结点类型定义:typedefchardatatype;typedefstructtnode{datatypedata;structtnode*lchild,*rchild;}BiTNode,*BiTree;任务1.题目要求创建一个程序文件sy4.cpp,自定义相应函数完成以下操作:(1)voidvisit(BiTreep)/*输出p指针指向的结点*/(2)voidPreorder(BiTreeT)/*前序遍历*/(3)voidInorder(BiTreeT)/*中序遍历*/(4)voidPostor

3、der(BiTreeT)/*后序遍历*/(5)BiTreeCreateTree()/*以前序遍历的顺序建立二叉树*/(6)intdeep(BiTreeT)/*求二叉树深度*/(7)intleaf(BiTreeT)/*求叶子结点数*/(8)intOneChild(BiTreeT)/*求1度结点数*/(9)intTwoChild(BiTreeT)/*求2度结点数*/(10)voidExchange(BiTreeT)/*二叉树左右子树交换*/(11)BiTreeInorderLastNode(BiTreeT);/*找二

4、叉树中序遍历最后一个结点*/2.请回答下列问题(1)在n个结点二叉树的二叉链表存储中,其指针域的总数为2n个,其中n-1个用于链接孩子结点,n+1个空闲着。(2)在二叉链表存储中,数据域值为data,左右子树的指针分别为left和right,则判断:指针p所指结点为0度结点的条件是p->left==NULL&&p->right==NULL;指针p所指结点为1度结点的条件是(p->left==NULL&&p->right!=NULL)

5、

6、(p->left!=NULL&&p->right==NULL);指针p所指结点

7、为2度结点的条件是p->left!=NULL&&p->right!=NULL。(3)T为二叉树的根的地址,该树是空二叉树满足条件:T==NULL。3.sy14.cpp源程序清单(含必要的注释)#include#includetypedefchardatatype;typedefstructtnode{datatypedata;structtnode*lchild,*rchild;}BiTNode,*BiTree;voidvisit(BiTreep);/*输出p指针指向的结点*

8、/voidPreorder(BiTreeT);/*前序遍历*/voidInorder(BiTreeT);/*中序遍历*/voidPostorder(BiTreeT);/*后序遍历*/BiTreeCreateTree();/*以前序遍历的顺序建立二叉树*/intdeep(BiTreeT);/*求二叉树深度*/intleaf(BiTreeT);/*求叶子结点数*/intOneChild(BiTreeT);/*求1度结点数*/intTwoChild(BiTreeT);/*求2度结点数*/voidExchange(BiT

9、reeT);/*二叉树左右子树交换*/BiTreeInorderLastNode(BiTreeT);/*找二叉树中序遍历最后一个结点*/voidvisit(BiTreep){/*输出p指针指向的结点*/if(p->data!='#'){printf("%c",p->data);}}voidPreorder(BiTreeT){/*前序遍历*/if(T!=NULL){visit(T);//访问根节点Preorder(T->lchild);//访问左子节点Preorder(T->rchild);//访问右子节点}}vo

10、idInorder(BiTreeT){/*中序遍历*/if(T!=NULL){Inorder(T->lchild);//访问左子节点visit(T);//访问根节点Inorder(T->rchild);//访问右子节点}}voidPostorder(BiTreeT){/*后序遍历*/if(T!=NULL){Postorder(T->lchild);//访问左子节点Post

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

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

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