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
这种访问称为广度优先或级别顺序。您可以查看其他信息 基本上是你
- 首先访问当前节点
- 然后是该节点的所有子节点
- 然后是每个孩子的所有孩子等等
- 推根
- 直到队列为空
- 获取第一个元素,访问它,并将其所有子元素推到队列的末尾
- 重复
如果你觉得自己很野蛮,想简单地考虑一下自己所处的水平……
您将需要:
- 两个队列
- 杰克走近时的轻微扭转
将其子对象添加到第一个队列中。
穿过他们,一边走一边把他们的孩子放到第二个队列中。
切换到第二个队列,单步进行,将孩子推到第一个队列。
上蜡,脱蜡
实际上,它只是对相同思想的一个小小扩展,即广度优先搜索或扫描,这是一种值得考虑的模式,因为它适用于各种数据结构。几乎所有的东西都是树或树,事实上还有一些东西不是 一个节点可以有多少子节点,它总是0还是2,或者它可以是1,或者确实超过2?输入错误,抱歉:)正在考虑晚餐