【问题标题】:In a tree data structure, display tree nodes level by level在树数据结构中,逐级显示树节点
【发布时间】:2011-05-15 07:46:30
【问题描述】:

问题:如何逐级显示树节点?能否请您给我节省时间和空间的解决方案。

示例:

    A
   / \
  B   C
 / \  / \
D   E F  G

void PrintTree(struct tree *root);

输出: 您必须逐级打印树节点

  A
  B C
  D E F G

【问题讨论】:

  • 一个节点可以有多少个子节点,总是 0 还是 2,或者可以是 1,或者确实超过 2?

标签: c algorithm tree breadth-first-search


【解决方案1】:

这种访问称为广度优先层次顺序。您可以查看更多信息here

基本上你

  • 首先访问当前节点
  • 那么该节点的所有子节点
  • 然后是每个孩子的所有孩子等等

这应该可以通过 FIFO 结构轻松实现:

  • 推根目录
  • 直到队列为空
  • 获取第一个元素,访问它,并将其所有子元素推到队列末尾
  • 重复

【讨论】:

  • 打错了,抱歉 :) 正在考虑晚餐
【解决方案2】:

【讨论】:

    【解决方案3】:

    如果你觉得自己很野蛮,并且想非常简单地考虑一下自己所处的水平......
    您将需要:

    • 两个队列
    • Jack 的做法略有变化

    所以,从 root 开始。
    将其子项添加到第一个队列中。
    穿过他们,边走边把他们的孩子带到第二个队列。
    切换到第二个队列,逐步通过,将他们的孩子推到第一个队列。
    打蜡,脱蜡。

    真的只是对同一个想法的轻微扩展,广度优先搜索或扫描,作为一种模式值得思考,因为它适用于各种数据结构。几乎任何东西都是一棵树或树,还有一些不是,事实上!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多