简洁+注释剑指 Offer 32 - II. 从上到下打印二叉树 II

Posted 来老铁干了这碗代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简洁+注释剑指 Offer 32 - II. 从上到下打印二叉树 II相关的知识,希望对你有一定的参考价值。

立志用最少的代码做最高效的表达


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

例如:
给定二叉树: [3,9,20,null,null,15,7],
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]

提示:
节点总数 <= 1000


class Solution{
    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root == null) return null;           // 根节点为空的情况

        List<List<Integer>>list = new ArrayList<>();
        Queue<TreeNode> q = new ArrayDeque<>();         // 队列
        q.add(root);                    // 先加入头结点
        while(!q.isEmpty()) {           // 当队列非空时一直运行
            int nowLevelNums = q.size();    // 记录当前节点数,若节点数减为0,则代表该层结束
            List<Integer>tmpList = new ArrayList<>();       // 存储每一层的节点的值
            while(nowLevelNums-- != 0) {
                TreeNode tmp = q.remove();              // 将队列中的每个节点都出队,逐一判断
                tmpList.add(tmp.val);
                if(tmp.left != null) q.add(tmp.left);
                if(tmp.right != null) q.add(tmp.right);
            }
            list.add(tmpList);
        }
        return list;
    }
}

完整可运行代码

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;

public class 剑指Offer32_II_从上到下打印二叉树II {
    static class TreeNode{
        int val;
        TreeNode left, right;
        TreeNode(int v) { val = v; }
    }
    static class Solution{
        public List<List<Integer>> levelOrder(TreeNode root) {
            if(root == null) return null;           // 根节点为空的情况

            List<List<Integer>>list = new ArrayList<>();
            Queue<TreeNode> q = new ArrayDeque<>();         // 队列
            q.add(root);                    // 先加入头结点
            while(!q.isEmpty()) {           // 当队列非空时一直运行
                int nowLevelNums = q.size();    // 记录当前节点数,若节点数减为0,则代表该层结束
                List<Integer>tmpList = new ArrayList<>();       // 存储每一层的节点的值
                while(nowLevelNums-- != 0) {
                    TreeNode tmp = q.remove();              // 将队列中的每个节点都出队,逐一判断
                    tmpList.add(tmp.val);
                    if(tmp.left != null) q.add(tmp.left);
                    if(tmp.right != null) q.add(tmp.right);
                }
                list.add(tmpList);
            }
            return list;
        }
    }
    public static void main(String[] args) {

    }
}

以上是关于简洁+注释剑指 Offer 32 - II. 从上到下打印二叉树 II的主要内容,如果未能解决你的问题,请参考以下文章

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

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

183132I32II32III24

183132I32II32III24

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

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