跳到正文

5.4.3 树和森林的遍历

40 分钟

5.4.3 树和森林的遍历

树的先根遍历先访问根,再依次先根遍历各子树;后根遍历先遍历各子树再访问根。左孩子右兄弟转换后,树的先根对应二叉树先序,树的后根对应二叉树中序。森林也按各棵树从左到右处理。

手工推演

树 A 的孩子 B、C,B 的孩子 D、E。先根 A-B-D-E-C;后根 D-E-B-C-A。转成二叉树后先序仍为 A-B-D-E-C,中序为 D-E-B-C-A。

结构与代码

递归孩子兄弟表示:先根访问当前结点,再递归 firstChild 所代表的子树链;实现时必须清楚递归函数是处理单棵树还是处理整条兄弟森林,避免重复或漏访。

错解反馈

把后根遍历等同二叉树后序;遍历完第一个孩子就返回,漏掉兄弟;森林中只处理第一棵树。

迁移练习

森林两棵树分别为 A(B,C)D(E),写先根和后根。答案先根 A-B-C-D-E;后根 B-C-A-E-D。

小纸条

森林两棵树分别为 A(B,C)D(E),写先根和后根?

登录 后可看答案

Practice

本课练习

0

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

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