C 在树数据结构中,逐级显示树节点

C 在树数据结构中,逐级显示树节点,c,algorithm,tree,breadth-first-search,C,Algorithm,Tree,Breadth First Search,问题:我们如何逐级显示树节点?。你能给我一个节省时间和空间的解决方案吗 示例: A / \ B C / \ / \ D E F G void PrintTree(struct tree *root); 输出: 您必须逐级打印树节点 A B C D E F G 这种访问称为广度优先或级别顺序。您可以查看其他信息 基本上是你 首先访问当前节点 然后是该节点的所有子节点 然后是每个孩子的所有孩子等等 这应该通过FIFO结构轻松实现: 推根 直到队

问题:我们如何逐级显示树节点?。你能给我一个节省时间和空间的解决方案吗

示例:

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

void PrintTree(struct tree *root);
输出: 您必须逐级打印树节点

  A
  B C
  D E F G

这种访问称为广度优先级别顺序。您可以查看其他信息

基本上是你

  • 首先访问当前节点
  • 然后是该节点的所有子节点
  • 然后是每个孩子的所有孩子等等
这应该通过FIFO结构轻松实现:

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

为节省空间和时间,请:


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

  • 两个队列
  • 杰克走近时的轻微扭转
所以,从根开始。
将其子对象添加到第一个队列中。
穿过他们,一边走一边把他们的孩子放到第二个队列中。
切换到第二个队列,单步进行,将孩子推到第一个队列。
上蜡,脱蜡


实际上,它只是对相同思想的一个小小扩展,即广度优先搜索或扫描,这是一种值得考虑的模式,因为它适用于各种数据结构。几乎所有的东西都是树或树,事实上还有一些东西不是

一个节点可以有多少子节点,它总是0还是2,或者它可以是1,或者确实超过2?输入错误,抱歉:)正在考虑晚餐