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

需求

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


     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, 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值