二叉树的层次遍历 Binary Tree Level Order Traversal

最新加了注释的模板:

本层拿出来,放到level中,下一层的放到q中

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        //初始化两个要用的数据结构
        List<List<Integer>> result = new LinkedList<List<Integer>>();
        Queue<TreeNode> q = new LinkedList<TreeNode>();
        
        //先定义退出的条件。是返回一个空的,不是返回完全的null
        if (root == null) {
            return result;
        }
        
        //推第一个根节点进去
        q.offer(root);
        
        //while这一层不是空
        while (!q.isEmpty()) {
            //测量Q的大小,表示目前的这一层
            int size = q.size();
            //建立新的数据结构
            List<Integer> level = new LinkedList<Integer>();
            
            //for循环放进去,注意此处要用固定的本层q的size
            for (int i = 0; i < size; i++) {
                //本层拿出来,放到level中。以前的q作为这一层。
                TreeNode node = q.poll();
                level.add(node.val);
                
                //下一层的放到q中
                if (node.left != null) {
                    q.offer(node.left);
                }
                if (node.right != null) {
                    q.offer(node.right);
                }                
            }
            
            result.add(level);
        }
        
        return result;
    }
}
原文地址:https://www.cnblogs.com/immiao0319/p/14517885.html