题解 | #求二叉树的层序遍历#

求二叉树的层序遍历

http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3

使用队列和list集合实现。

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
         ArrayList<ArrayList<Integer>> res = new ArrayList<>();       
        if(root == null) {
            return res;
        }       
        // 队列保存每一层所有结点
        Queue<TreeNode> queue = new LinkedList<>();
        // 先放入根节点
        queue.offer(root);

        while(!queue.isEmpty()) {
            // 收集当前层的所有结点的值
            ArrayList<Integer> list = new ArrayList<>();
            // ·当前层的节点数量
            int count = queue.size();
            // 遍历每一层
            while(count-- > 0) {
                // 从对头取出节点
                TreeNode node = queue.poll();
                // 收集结果
                list.add(node.val);
                // 左右节点按顺序加到队尾
                if(node.left != null) {
                    queue.offer(node.left);
                }
                if(node.right != null) {
                    queue.offer(node.right);
                }
            }
            res.add(list);
        }
        return res;
    }
}
全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务