题目内容
(请给出正确答案)
[主观题]
设一棵树的存储表示为子女-兄弟链表,编写一个算法无重复地输出树中所有的边,要求输出的形式为
(k1,k2),…,(ki,kj),…,其中ki,和kj,为树结点的标志。
查看答案
如果结果不匹配,请 联系老师 获取答案
(1)沿袭5-60题使用逆转链遍历二叉树的思想。
(2)不使用tag标志,而是用内嵌的栈代替tag的作用。该内嵌的栈使用了叶结点作为栈的结构,没有另外定义栈的存储空间。
(3)利用栈解决在回溯时分辨究竟是从左子树还是右子树上升的问题,步骤是:
①当进入有非空左子树的结点的右子树时,将该结点的地址进栈。
②在回溯过程中如遇到结点的左、布子树都非空时,如果该结点就是存于栈顶的结点,则可判定当前是从该结点的右子树退回,该结点的右子女指针指向它的父结点;否则当前是从该结点的左子树退回,该结点的左子女指向它的父结点。
根结点的数据,LT和RT是括号形式的左子树和右子树。要求空树不打印任何信息,一个结点的树的打印形式是x,而不应是(x,)的形式。
A.顺序存储方式的优点是存储密度大,且插入、删除运算效率高
B.链表中的每一个结点都包含一个指针
C.包含n个结点的二叉排序树的最大检索长度为log/-2n
D.将一棵树转换为二叉树后,根结点没有右子树
对于图4-38所示的树,试给出:
1)双亲数组表示法示意图;
2)孩子链表表示法示意图:
3)孩子兄弟链表表示法示意图。