需求
将二叉树的 各节点输出, 按照层级输出
4
/ \
2 7
/ \ / \
1 3 6 9
方法1
public static void outputTree(TreeNode root) {
if (root == null) {
return;
}
System.out.println(root);
List<TreeNode> former = new ArrayList<TreeNode>();
former.add(root);
while (former.size() != 0) {
List<TreeNode> current = new ArrayList<TreeNode>();
for (TreeNode node : former) {
System.out.print(node.left + ", ");
System.out.print(node.right + ", ");
if (node.left != null) {
current.add(node.left);
}
if (node.right != null) {
current.add(node.right);
}
}
System.out.println();
former.clear();
former.addAll(current);
}
}
思路
因为按照层输出, 所有用两个 list 变量. 一个保存 这层的 节点, 一个保存所有这层节点的子节点
缺陷
对于某些子节点为空的节点支持得不是很好
为空的节点在中间时, 输出也会有些偏差
方法1 输出
8
4, 10,
2, null, 9, 12,
1, null, null, null, null, null,
null, null,