跳到正文

5.4.2 树、森林与二叉树的转换

40 分钟

5.4.2 树、森林与二叉树转换

树转二叉树采用左孩子右兄弟:每结点最左孩子成为左孩子,其余兄弟沿右链连接。森林中各棵树的根互为兄弟,第一棵树根作为二叉树根,其余根沿右链。逆转换按同一语义还原。

手工推演

森林含 T1 根 A(孩子 B、C)和 T2 根 D(孩子 E)。二叉表示:A.left=B,B.right=C,A.right=D,D.left=E。A.right 代表下一棵树根,不代表原森林中 A 的孩子。

结构与代码

转换保持结点数但改变边的解释。普通树中一个结点的所有孩子,转后成为“左孩子起始的一条右兄弟链”。画图时先连兄弟水平线,再只保留最左孩子竖线,最后旋转理解。

错解反馈

把所有孩子都连成左链;忘记森林根之间的右链;转换后仍按二叉树左右孩子解释原树度。

迁移练习

将括号树 A(B(E,F),C,D) 转成左孩子右兄弟表示,写 A、B、E 的两指针。答案 A.left=B;B.left=E,B.right=C;E.right=F。

小纸条

将括号树 A(B(E,F),C,D) 转成左孩子右兄弟表示,写 A、B、E 的两指针?

登录 后可看答案

Practice

本课练习

0

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

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