从左往右 从上往下 按层遍历 输出 树 二叉树

来源:互联网 发布:painter安装教程mac 编辑:程序博客网 时间:2024/06/08 06:16

需求

将二叉树的 各节点输出, 按照层级输出


     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 输出

84, 10, 2, null, 9, 12, 1, null, null, null, null, null, null, null, 
0 0
原创粉丝点击