跳到正文

5.4 树的存储结构、树、森林与二叉树的转换·综合题讲评

40 分钟

5.4 综合题:从孩子兄弟链恢复原树

恢复时对每个结点沿 firstChild 找第一个孩子,再沿该孩子的 nextSibling 收集全部孩子;递归处理每个孩子。森林根则从首根沿 nextSibling 收集。

手工推演

给 A.left=B,B.right=C,C.right=D,B.left=E,D.left=F:原树 A 的孩子 B、C、D;B 的孩子 E;D 的孩子 F。先根 A-B-E-C-D-F,后根 E-B-C-F-D-A。

结构与代码

可写校验程序同时输出转换后二叉树先序与恢复树的先根序列,两者应相同;输出二叉树中序与树后根也应相同。这个交叉不变量能发现兄弟链接错。

错解反馈

沿兄弟链递归时把兄弟当当前结点孩子;恢复后只核结点集合不核父子关系;序列相同就断言树唯一,忽略单一遍历序列通常不足。

迁移练习

自行构造一棵度为4的树,转换、恢复,并核对每个结点孩子列表和两组遍历对应。

小纸条

自行构造一棵度为4的树,转换、恢复,并核对每个结点孩子列表和两组遍历对应。

登录 后可看答案

Practice

本课练习

0

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

本课练习正在补齐,暂不应标记为完成。