有层次的二叉树遍历

Binary tree traversal with level

有没有什么方法可以遍历树,从而打印出包含每个节点级别的二叉树?假设我有这棵树:

   10
   /\
  5  15
 /    /\
2    12 16

并且输出(例如在预订中)将是:

节点(级别)

10 (0), 5 (1), 2 (2), 15 (1), 12 (2), 16 (2)

最理想的方式是二进制方式:

10 ([]), 5 ([1]), 2 ([11]), 15 ([0]), 12 ([01]), 16 ([00])

是的,这绝对有可能。看起来您想以深度优先顺序遍历树,这使事情变得简单易行。

算法看起来像这样(由于没有提供代码以供参考,因此使用伪代码):

void traverse(node, depth) {
  print(node.value, depth);
  depth++;
  traverse(node.leftChild, depth);
  traverse(node.rightChild, depth);
  depth--;
}

因此您只需调用传递树的根节点和初始深度 (0) 的方法即可。