实验四 树和二叉树
1. 实验目的:
掌握二叉树遍历算法的应用,熟练使用先序、中序、后序3种递归和非递归遍历算法以及层次遍历算法进行二叉树问题的求解。
2. 仪器与材料:
装有Windows操作系统和VC++6.0编程环境的PC机一台。
3. 实验内容:
编写一个程序exp7-7. cpp实现以下功能,并对图7. 33所示的二叉树进行验证。
- 采用先序遍历方法输出所有从叶子结点到根结点的逆路径。
- 采用先序遍历方法输出第一条最长的逆路径。
- 采用后序非递归遍历方法输出所有从叶子结点到根结点的逆路径。
4. 实验记录:
树是一种非线性的结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。
二叉树的存储结构
顺序结构:用数组表示,前提是二叉树要为一棵完全二叉树
链式结构:用链表表示二叉树
函数功能:
(1)二叉树的括号表示:“A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”.
(2)输出二叉树b
(3)输出’H’节点的左,右孩子节点值
(4)输出二叉树b的高度
(5)释放二叉树
(6)输出二叉树的宽度
(7)输出二叉树的节点数
(8)输出二叉树的叶子节点的数
CreateBtree(*b,*str)
DestroyBtree(&b)
FindNode(b,x)
LchildNode(p)
RchildNode(p)
BTHeight(b)
DisBtree(b)
5. 实验体会:
先序遍历:按照根节点->左子树->右子树的顺序访问二叉树。后序遍历:按照左子树->右子树-->根节点的顺序访问二叉树。先序遍历方法输出每个叶子结点到根结点的路径序列, 输出栈中所有结点值, 最后用先序遍历方法输出一条最长路径。遍历过程中经过节点的路线一样;只是访问各个节点的时机不同,递归算法主要使用堆栈来实现。