如何逐层阅读和打印二进制树?

时间:2014-12-05 03:23:49

标签: algorithm tree floor

我在C

中有一个树形结构
Node {
   int info;
   Node *left;
   Node *right;
}

由节点组成的二叉树。现在我想逐层打印树。 例如:

1
2  7
1  8  7  0

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以简单地使用BFS(广度优先搜索)算法。从root开始将其子项添加到队列。打印root本身。现在对Queue中的 Top 元素执行相同操作。这是一个伪代码

Queue = {root} //Queue Containing Only root in the first place 
while (Queue is not empty){
    t = Queue.top()
    print(t.info)
    if (t is not a leaf){
        Queue.push(t.left)
        Queue.push(t.right)
    }
}

如果您想了解更多有关BFS的信息,可以查看以下内容:

https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Breadth-first_search.html

http://www.ics.uci.edu/~eppstein/161/960215.html

https://www.youtube.com/watch?v=QRq6p9s8NVg