一、实验目的
1)理解二叉树的定义和二叉树的5大性质,并掌握它们的推理过程。
2)熟练掌握二叉树的两种存储方式:顺序和(静态)链式。
3)熟练掌握二叉树的ADT、存储结构和处理方法,理解遍历的实质,能够用递归和非递归的方法实现二叉树的三种遍历。
4)在掌握二叉树的各种基础的操作后,能够利用二叉树的相关知识解决一些相关的算法思维题。
二、实验环境
1)自备计算机,windows操作系统以及相关的编译器(如devc++)。
三、实验要求
1)采用二叉链表作为存储结构,实现二叉树的(先序、中序、后序)遍历,其中,先序遍历和后序遍历采用递归算法,中序遍历采用非递归算法。
2)树中的每个节点的类型定义为字符型。
四、实验内容
代码如下:
1)非递归二叉链表实现中序遍历
2)二叉链表递归实现三种遍历
运行结果:
五、思考题
代码如下:
2)对二叉树中序线索化的实现
3)树的层次遍历:
4)已知树的先序和中序遍历,求其后序遍历:
六、运行结果
七、总结
通过这次试验,我更加熟悉了树这一非线性数据结构,更加熟练地掌握二叉树的ADT、存储结构和处理方法。理解了遍历的实质,能够用递归和非递归的方法,用二叉链表实现二叉树的三种遍历。学会了树的层次遍历和线索化二叉树的使用。此外,通过学习、思考和代码调试,我能够利用二叉树的相关知识(权值。bfs、广度、深度)来解决一些相关的算法思维题。