收藏 分享(赏)

二叉树的建立和遍历实验报告.doc

上传人:精品资料 文档编号:10354601 上传时间:2019-11-03 格式:DOC 页数:4 大小:32KB
下载 相关 举报
二叉树的建立和遍历实验报告.doc_第1页
第1页 / 共4页
二叉树的建立和遍历实验报告.doc_第2页
第2页 / 共4页
二叉树的建立和遍历实验报告.doc_第3页
第3页 / 共4页
二叉树的建立和遍历实验报告.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1实验四 二叉树的建立和遍历 学院 专业 班 学号 姓名 一实习目的1. 掌握二叉链表的存储结构;2. 掌握二叉链表的建立;3. 掌握二叉树的先序遍历、中序遍历、后序遍历的递归算法;4. 掌握二叉树遍历算法的应用;二实习内容1. 按先序序列建立二叉树的二叉链表(算法 6.4)(空树用#表示)2. 对生成的二叉树分别进行先序遍历、中序遍历、后序遍历,输出结果。3 统计二叉树中结点个数; 4. 求二叉树的高度;三实验步骤1. 定义 二叉链表的存储结构#include “stdio.h“#include “stdlib.h“typedef char TElemType;typedef struct

2、BiTNodeTElemType data;struct BiTNode *lchild, *rchild; / 左右孩子指针BiTNode,*BiTree;2. 编写函数 CreateBiTree,按先序序列建立二叉树的二叉链表;测试的字符序列为 abdg#e#c#f#;程序代码为:void CreateBiTree(BiTree scanf(“%c“,if(ch=#) / 空T=NULL;elseT=(BiTree )malloc(sizeof(BiTNode); / 生成根结点if(!T)2exit(-1);T-data=ch;CreateBiTree(T-lchild);/ 递归构造左

3、子树CreateBiTree(T-rchild);/ 构造右子树2. 编写二叉树的先序遍历、中序遍历、后序遍历的递归算法int preOrderTraverse(BiTree T) / 初始条件:二叉树 T 存在,先序递归遍历 T;if(T=NULL) return 1; if(T!=NULL) / T 不空printf(“%5c“,T-data); / 访问根结点preOrderTraverse(T-lchild);/ 先序遍历左子树preOrderTraverse(T-rchild);/ 先序遍历右子树int inOrderTraverse(BiTree T) / 初始条件:二叉树 T 存

4、在,中序递归遍历 T;if(T=NULL) return 1; if(T!=NULL) / T 不空inOrderTraverse(T-lchild);/ 中序遍历左子树printf(“%5c“,T-data); / 访问根结点inOrderTraverse(T-rchild);/ 中序遍历右子树int postOrderTraverse(BiTree T) / 初始条件:二叉树 T 存在,/ 操作结果:后序递归遍历 T;if(T=NULL) return 1; if(T!=NULL) / T 不空postOrderTraverse(T-lchild);/ 后序遍历左子树postOrderTr

5、averse(T-rchild);/ 后序遍历右子树printf(“%5c“,T-data); / 访问根结点33. 编写函数统计二叉树中结点个数; (遍历算法)int countND(BiTree T) int n=0,k=0,m=0;if(T=NULL) return 0;else if(T-lchild!=NULL ) k=countND(T-lchild); / 后序遍历左子树 ,得到左子树结点个数if(T-rchild!=NULL ) m=countND(T-rchild); / 再后序遍历右子树n=m+k+1 ; return n;4. 编写函数求二叉树的高度;int Bithei

6、ght(BiTree T) int lh,rh,th;if(T=NULL)return 0; lh= Bitheight(T-lchild); / 递归求 T 的左子树的高度 lhrh= Bitheight(T-rchild); /递归求 T 的右子树的高度 rhif(lhrh) th=lh+1; else th=rh+1;return th;4. 编写 main 函数,调用函数,输出结构void main()int i,k,h ;BiTree T;printf(“请按先序输入二叉树(如:ab#表示 a 为根结点,b 为左子树的二叉树)n“);CreateBiTree(T);printf(“先

7、序遍历的结果为:n“);i=preOrderTraverse(T); printf(“n“);printf(“中序遍历的结果为:n“);i=inOrderTraverse(T);printf(“n“);printf(“后序遍历的结果为:n“);i=postOrderTraverse(T);printf(“n“);k=countND(T);4printf(“结点个数为%dn“,k); h= Bitheight(T); printf(“输出树的高度为%dn“, h);4. 运行结果 (截图)图 1.二叉树的建立和遍历四 实验小结通过本次实习,我掌握了先序、中序、后序遍历中的递归算法的使用,从而实现了对二叉树的先序、中序、后序遍历。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报