用递归算法遍历二叉树.doc

用递归算法遍历二叉树.doc

ID:62043829

大小:200.00 KB

页数:11页

时间:2021-04-16

用递归算法遍历二叉树.doc_第1页
用递归算法遍历二叉树.doc_第2页
用递归算法遍历二叉树.doc_第3页
用递归算法遍历二叉树.doc_第4页
用递归算法遍历二叉树.doc_第5页
资源描述:

《用递归算法遍历二叉树.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、个人收集整理勿做商业用途实验二用递归算法遍历二叉树[实验目的]学习掌握二叉树各种遍历方法的基本操作算法。[实验内容]建立一棵二叉树,并用递归算法分别用前序、中序和后序遍历之。[实验要点及说明]由于二叉树的定义是递归的,因而一棵非空二叉树可以看作是由根结点、左子树和右子树这三个基本部分组成的。如果能依次遍历这三个部分的信息,也就遍历了整个二叉树。由此得到的二叉树的遍历是按某种策略访问二叉树中的每一个结点且仅访问一次的过程。二叉树的遍历按访问根结点的先后次序不同分为前序、中序和后序三种。前序遍历二叉树的操作定义为:若二叉树为空,则空操作;

2、否则(1)访问根结点;(2)前序遍历左子树;(3)前序遍历右子树。中序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则(1)中序遍历左子树;(2)访问根结点;(3)中序遍历右子树。后序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。[实验要求与步骤]1.基本要求:采用递归算法实现前序、中序和后序遍历;2.测试数据:个人收集整理勿做商业用途1.实现提示:二叉树的遍历是指按照某种顺序访问二叉树中的每个结点,使每个结点被访问一次且只被访问一次;2.按要求编写程序;3.上机

3、录入程序,并进行编辑、编译、调试,直到运行成功。[参考程序]#include<stdio.h>#define null 0intcounter=0;typedefstructbtreenode{int data;structbtreenode*lchild;struct btreenode*rchild;}bnode;bnode*p;bnode *creat(intx,bnode*lbt,bnode *rbt){bnode*p;p=(bnode*)malloc(sizeof(bnode));p->data=x;p->lchild=lb

4、t;p->rchild=rbt;return(p);}bnode*ins_lchild(bnode*p,intx){bnode*q;if(p==null)printf("Illegalinsert.");else{q=(bnode*)malloc(sizeof(bnode));q->data=x;q->lchild=null;q->rchild=null;if(p->lchild!=null)q->rchild=p->lchild;p->lchild=q;}个人收集整理勿做商业用途}bnode*ins_rchild(bnode*p,i

5、nt x){bnode*q;if(p==null)printf("Illegalinsert.");else{q=(bnode*)malloc(sizeof(bnode));q->data=x;q->lchild=null;q->rchild=null;if(p->rchild!=null)q->lchild=p->rchild;p->rchild=q;}}voidprorder(bnode*p){if(p==null)return;printf("%dt%ut%dt%u\t%u\n",++counter,p,p->data,p

6、->lchild,p->rchild);if(p->lchild!=null)proder(p->lchild);if(p->rchild!=null)proder(p->rchild);}voidpreorder(bnode*p){if(p==null)return;printf("%d",p->data);if(p->lchild!=null)preoder(p->lchild);if(p->rchild!=null)preoder(p->rchild);}void inorder(bnode*p){if(p==null)retu

7、rn;if(p->lchild!=null)inoder(p->lchild);printf("%d",p->data);if(p->rchild!=null)inoder(p->rchild);}voidpostorder(bnode*p){if(p==null)个人收集整理勿做商业用途return;if(p->lchild!=null)postoder(p->lchild);if(p->rchild!=null)postoder(p->rchild);printf("%d",p->data);}main(){bnode*bt,*p

8、,*q;intx;printf("Inputroot:");scanf("%d",&x);p=creat(x,null,null);bt=p;scanf("%d",&x);while(x!=-1){p=bt;q=p;wi

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

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

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