c - 在树型数据结构中,逐级显示树节点

标签 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

最佳答案

如果你感觉很野蛮,想简单地思考一下你所处的水平......
您将需要:

  • 两个队列
  • Jack 的方法略有不同

所以,从 root 开始。
将它的 child 加入第一个队列。
穿过它们,边走边将它们的 child 放到第二个队列中。
切换到第二个队列,单步执行,将他们的 child 推到第一个队列。
上蜡,脱蜡。

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

关于c - 在树型数据结构中,逐级显示树节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4270820/

相关文章:

C 程序在 Mac OSX 和 Linux 上表现不同

c - "#if 0 ...#endif"声明的目的是什么

python - 高斯算法显示意外行为

c - 如何使用fork()创建这个进程树?

algorithm - [特定时间间隔内的最大能量]

java - 使用 JDOM 解析 XML 文件,出现错误 StackOverflowError

c - 将 C 代码从 Linux 移植到 FreeBSD 时出现语法错误

有人能给我解释一下 glib 中的这个宏 #define g_once_init_enter(location) 吗?

Python:根据两个特征的唯一组合和第三个特征的条件删除重复项

java - 计算图像位移 - Java