《算法通关村—二叉树的层序遍历原来如此简单》

1、首先建立一个队列和列表

2、处理二叉树为空的情况,如果不为空则把二叉树的所有元素放入队列里

3、建立一个临时列表并获取每一层的长度进行遍历

4、将每一层的元素放入临时列表里

5、若左右子树不为空则放入队列中

6、将每次循环的临时列表中的元素放入最开始建立的列表里

7、输出该列表

public List<List<Integer>> level102Order(TreeNode root) {
    if(root==null) {
        return new ArrayList<List<Integer>>();
    }
    
    List<List<Integer>> res = new ArrayList<List<Integer>>();
    LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
    //将根节点放入队列中,然后不断遍历队列
    queue.add(root);
    while(queue.size()>0) {
        //获取当前队列的长度,也就是当前这一层的元素个数
        int size = queue.size();
        ArrayList<Integer> tmp = new ArrayList<Integer>();
        //将队列中的元素都拿出来(也就是获取这一层的节点),放到临时list中
        //如果节点的左/右子树不为空,也放入队列中
        for(int i=0;i<size;++i) {
            TreeNode t = queue.remove();
            tmp.add(t.val);
            if(t.left!=null) {
                queue.add(t.left);
            }
            if(t.right!=null) {
                queue.add(t.right);
            }
        }
        //此时的tmp就是当前层的全部元素,用List类型的tmp保存,加入最终结果集中
        res.add(tmp);
    }
    return res;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值