数据结构与算法 实验:二叉树的建立

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程:数据结构与算法实验日期:-*

实验名称:二叉树的建立

一、实验目的

能够掌握二叉树

二、实验内容

必做部分

(1)上机任务:二叉树的创建(.cpp)

1.1)先给出二叉链表的类型定义

1.2)给出先序创建二叉树的算法函数定义

算法6.4:按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,构造二叉链表表示的二叉树T(使用书上的输入序列建立该二叉树):

BiTreeCreateBiTree(BiTree&T)

1.3)给出打印二叉树内容的函数(打印方式自定义)

1.4)在主函数中增加调用入口,测试上述操作函数是否正常工作

(2)回答下述问题:

2.1)请问要创建如下二叉树,应输入怎样的字符序列?

答:

2.2)怎样实现打印二叉树中的结点信息?是否能从算法6.4中得到什么启发?

答:

2.3)假设一棵二叉树有100个结点,其中有29个度为1的结点,请问有多少个叶子结点?

答:

2.4)一个有n个结点的二叉链表中有多少个空指针域?

答:

选做部分

1、实现先序、中序、后序递归遍历二叉树的操作函数

2、编写统计一棵二叉树的叶子数的操作函数

3、在主函数中对1、2中操作进行调用,测试其是否正常工作

三、实验步骤

(1)上机任务:二叉树的创建(.cpp)

1.1)先给出二叉链表的类型定义

1.2)给出先序创建二叉树的算法函数定义

算法6.4:按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,构造二叉链表表示的二叉树T(使用书上的输入序列建立该二叉树):

BiTreeCreateBiTree(BiTree&T)

1.3)给出打印二叉树内容的函数(打印方式自定义)

1.4)

在主函数中增加调用入口,测试上述操作函数是否正常工作

A B D

C

F

E

G

(2)回答下述问题:

2.1)请问要创建如下二叉树,应输入怎样的字符序列?

答:ABC⌀⌀⌀DEF⌀⌀G⌀⌀⌀

2.2)怎样实现打印二叉树中的结点信息?是否能从算法6.4中得到什么启发?

答:递归打印二叉树,算法6.4是先序递归遍历二叉树,将算法做适当修改便可打印

2.3)假设一棵二叉树有100个结点,其中有29个度为1的结点,请问有多少个叶子结点?

答:n0=n2+1;

n0+n2=100-29;

n2=35 n0=36

有36个叶子结点

2.4)一个有n个结点的二叉链表中有多少个空指针域?

答:n+1个

选做部分

1、实现先序、中序、后序递归遍历二叉树的操作函数

编写统计一棵二叉树的叶子数的操作函数

2、在主函数中对1、2中操作进行调用,测试其是否正常工作

3、

四、实验结果必做

选作

五、实验总结

1、要明确知道【先序】是根、左子树右子树;

【中序】是左子树、根、右子树;

【后序】是左子树、右子树、根。

2、在主函数中创建二叉树后,需要输入二叉树的值一定要先序输入,因为创建二叉树

的方法是先序创建,而且为空的二叉树的子树不能不写,需要用空格写出,否则同意创建不成功,这需要输入者输入必须正确。

3、先序、中序、后序的递归遍历程序大致相同,其区别在于根、左子树、右子树的遍

历前后。

相关文档
最新文档