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
本课练习
先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。
本课练习正在补齐,暂不应标记为完成。