剑指 Offer 32 - II. 从上到下打印二叉树 II

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]
 

提示:

节点总数 <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二叉树的层次遍历,不同的是要把每一层次分别按行输出。

https://blog.csdn.net/qq_35354855/article/details/119981102

在上面的文章中,是将二叉树的所有节点,从上至下,同层节点从左至右都打印出来到一个list中,而本题是将二叉树的节点,每层打印到一个list,也就是说,在while循环中,再加一个循环对队列进行访问,清空队列中这一层的节点,将其存入到list就可以了。

下面是代码:

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        Queue<TreeNode> treeNodes = new LinkedList<>();
        List<List<Integer>> lists = new ArrayList<>();
        TreeNode tnode = new TreeNode(0);

        if(root != null)treeNodes.offer(root);
        while(!treeNodes.isEmpty()){
            ArrayList<Integer> tmp = new ArrayList<>();
            for (int i = treeNodes.size(); i > 0; i--) {
                tnode = treeNodes.poll();
                tmp.add(tnode.val);
                if(tnode.left != null) treeNodes.offer(tnode.left);
                if(tnode.right != null)treeNodes.offer(tnode.right);
            }
            lists.add(tmp);
        }
        return lists;
    }
}

记忆一个知识点,机械复述的记忆效率与效果是最差的。

怎么样做效果最好呢?记忆之后经过自己的加工,再复述一遍,练习一下,这样的效果是最好的。

有输入,有思考,有输出,知识就变成自己的了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值