要求采用二叉链表作为存储结构,完成二叉树的建立,前序、中序和后序遍历的操作,求所有叶子及结点总数的操作等。具体实现要求:
(1) 基于先序遍历的构造算法:输入是二叉树的先序序列构造二叉树。
提示:二叉树是递归定义的,其建立和遍历都可以通过递归来实现。
对于给定一种遍历序列,不能唯一确定一颗二叉树,而需要给定中序序列和另外一种遍历序列。而对于一般二叉树,如果对于所有缺少左孩子或者右孩子的结点,将其扩充完整,使得所有叶子结点都是外来的,那么其遍历序列是唯一的。所以,如果给定上述一种完整的遍历序列(外来节点用#代替),就能确定唯一的一颗二叉树。
现如给定先序序列: ABD###CE#G##FH#I##J(最右结点J可不用添加#),其对应的二叉树:
(2)分别利用前序遍历、中序遍历、后序遍历所建二叉树;
(3)求二叉树结点总数,观察输出结果;
(4)求二叉树叶子总数,观察输出结果。
根据上图验证二叉树。编写二叉树的相关函数及测试主函数。