我在c中完成了一个红黑树,我发现很难按级别顺序打印它。我有一个打印输入,但我无法想象我应该如何在控制台打印中将其显示为树。这可行吗?我们可以在这里实施BFS或DFS吗?我在wiki中找到了一个算法,但我无法应用它。 如果有人在C中有代码,你可以在这里发布,这样我就可以学习吗? 来自维基:
levelorder(root)
q = empty queue
q.enqueue(root)
while not q.empty do
node := q.dequeue()
visit(node)
if node.left ≠ null
q.enqueue(node.left)
if node.right ≠ null
q.enqueue(node.right)
答案 0 :(得分:4)
你可以做一个BFS,但可能更容易做iterative deepening search,因为那样可以省去在C中实现FIFO队列的麻烦。伪码:
algorithm iterative-deepening(root)
D = max-depth(root)
for d=0 to D
depth-limited-search(root, d)
/* variant of DFS */
algorithm depth-limited-search(node, d)
if node != NULL
if d == 0
print node.contents
else
depth-limited-search(node.left, d - 1)
depth-limited-search(node.right, d - 1)