【问题标题】:Tree Traversal applications树遍历应用程序
【发布时间】:2015-02-13 12:47:12
【问题描述】:

我想知道是否有人知道我练习中期的问题并理解答案。

  1. 在编程中,通常最好复制与您的新需求相似的现有函数,然后更改副本以适应新需求。如果我想要一个函数以相反的顺序打印出一系列数字,你会复制四个遍历函数中的哪一个作为新函数的基础?

    答案:中序遍历()

  2. 给定一个包含 64 支球队单场淘汰赛结果的二叉树,我想打印出 F 击败的六支球队。请注意,下图仅显示了大得多的树的上部。我的代码只遵循 F 的胜利路径,所以它不是真正的树遍历。尽管如此,我的代码最接近并行的树遍历代码是什么?为什么?只需要一两句话,正确遍历8分,解释你选择的7分。 (我把给出的图片放在帖子的顶部)

    答案:后序遍历,因为它必须先查看两个孩子才能找到失败者并确定正确的路径。

【问题讨论】:

  • 第一个问题是建议复制粘贴和反复试验作为好的软件设计?!?
  • 你能解释一下你的意思吗?谢谢!
  • @guido 看起来是这样。我想对于无法排除公共部分的小代码 sn-ps,这是一个可行的选择。对于较大的代码库,通常有重构的机会,这种做法变得很糟糕。
  • 我指的是 c&p 部分。反复试验是一个不同的问题。

标签: tree binary-tree traversal inorder postorder


【解决方案1】:

对于问题 1,如果它在二叉搜索树上,那么中序遍历会给你一个排序的值列表。因此,如果您要查找给定范围内的值,最好使用中序遍历。

对于问题 2,由于它代表的是锦标赛,因此树是按照自下而上的方法构建的,即后序。我们也知道 F 必须在叶子中,所以后序是最好的方法。

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2015-10-11
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多