有层次的二叉树遍历
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) 的方法即可。
有没有什么方法可以遍历树,从而打印出包含每个节点级别的二叉树?假设我有这棵树:
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) 的方法即可。