c - 二叉树的层序遍历

标签 c algorithm binary-tree

我想执行二叉树的层序遍历。因此,对于给定的树,说:

     3
    / \
   2   1
  / \   \
 4   6   10

输出将是:

3 2 1 4 6 10

我知道我可以使用某种队列,但在 C 中递归执行此操作的算法是什么?任何帮助表示赞赏。

最佳答案

该图算法称为广度优先搜索,它使用队列进行层序遍历,这是伪代码

void breadth_first(Node root)
{
  Queue q;
  q.push(root);
  breadth_first_recursive(q)
}

void breadth_first_recursive(Queue q)
{
  if q.empty() return;
  Node node = q.pop()
  print Node
  if (n.left) q.push(n.left)
  if (n.right) q.push(n.right)
  breadth_first_recursive(q)
}

关于c - 二叉树的层序遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166617/

相关文章:

algorithm - 如何在二叉搜索树中找到仅由 1 组成的根的最深路径?

c - 从 C 中的列表中选择一个随机节点

c++ - vsnprintf 来自数组中的确切值

C - Mongoose 库回复消息

c - 无法使用 sizeof() 检查内存分配大小

algorithm - 将一个凸多边形拟合到另一个多边形中

algorithm - 在verilog中添加和移动

c - 二叉树 - 插入和镜像之间的区别?

objective-c - 旋转数组中的左元素,复杂度为 O(n),时间为 O(1)

c - C中二叉树的中序树遍历