1、第六章作业参见数据结构题集第 6 章部分 P38。1、一棵度为 2 的树与一棵二叉树有何区别?(题集 6.2)二叉树是颗有序树,但度为 2 的树则未必有序。2、假设一棵二叉树的层序序列为 ABCDEFGHIJ 和中序序列为 DBGEHJACIF。请画出该树(题集 6.29) 。3、假设二叉树如下,请分别写出先序、中序和后序遍历结果,并画出该二叉树对应的森林。AB CD E FG H答:先序遍历:A B D G C E F H中序遍历:D G B A E C H F后序遍历:G D B E H F C A4、画出与下列已知序列对应的树 T。 (题集 6.23)树的先根次序访问的序列为:GFKDA
2、IEBCHJ;树的后根次序访问的序列为:DIAEKFCJHBG。5、请编写一个递归算法,将二叉树中所有结点的左、右子树相互交换。 (题集6.43)6、 6.43 解:/ 按先序交换二叉树的左右子树Status ExchangeBiTree(BiTreeif(T)p=T-lchild;T-lchild=T-rchild;T-rchild=p;ExchangeBiTree(T-lchild);ExchangeBiTree(T-rchild);return OK;7、对于那些所有非叶子结点均有非空左右子树的二叉树,试问:有 n 个叶子结点的树中共有多少个结点?2n-18、森林与二叉树的转换。 (题集
3、 6.21)树 二叉树根 根第一个孩子 左孩子右兄弟 右孩子8、 选做:请设计按层次顺序(同一层自左向右)遍历二叉树的算法。 (题集6.47)typedef BiTree QElemType;#include “c:YinincludeQueue.h“Status LevelOrderTraverse(BiTreeQueue q;InitQueue(q);if(T) EnQueue(q,T);while(!QueueEmpty(q)DeQueue(q,p);Visit(p-data);if(p-lchild) EnQueue(q,p-lchild);if(p-rchild) EnQueue(q,p-rchild);return OK;