应用题5
考点:
- 树的存储结构(双亲表示法,孩子链表示法,双亲-孩子表示法,孩子-兄弟表示法)
- 树和二叉树的转化(详情见第三题解析)
- 中序线索二叉树
相关内容见书P136-140,P121-126
首先解决第一问,树的存储结构问题
双亲表示法:
用一维数组存储树的每个节点以及该节点双亲节点的存储位置,根节点双亲位置存储-1.
优点:方便找双亲
缺点:不方便找孩子
孩子链表示法:
用一维数组存储树的所有元素,把每个节点的孩子都构建一个单链表,并将链表的头指针与双亲信息放入数组的双亲元素对应的同一元素中。
优点:方便找孩子
缺点:不方便找双亲
双亲-孩子表示法:
将两者结合得到双亲-孩子表示法。
孩子-兄弟表示法:
方法类似于将树转化为二叉树的步骤。
第一问答案:
第二问答案:
第三问要求将得到的二叉树中序线索化,
我们要先将二叉树进行中序遍历得到中序序列。由中序序列我们可以很明显的看到每个节点的前驱和后继。
ITag为0时,IChild存储的是该节点的左孩子,ITag为1时,IChild存储的是该节点的前驱。
LTag为0时,LChild存储的是该节点的右孩子,LTag为1时,LChild存储的是该节点的后继。
由此,我们可以得到第三问的答案: