• leetcode 102. Binary Tree Level Order Traversal


    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    return its level order traversal as:

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

    给出一棵二叉树,返回其节点值的层次遍历,逐层从左往右访问

    使用队列存储每一层的节点,因为队列是先进先出的。进入循环弹出这一层节点存入数组,把弹出的节点的左右子节点存入队列中,依次循环。

    需要注意的几点:

    (1)队列中使用offer方法添加元素,如果发现队列已满无法添加元素的话,会直接返回false。

             如果用add方法添加元素,若超出了队列长度会直接抛异常。

    (2)队列中使用poll取出并移除头元素,如果队列为空,返回null。如果食用remove,若队列为空,抛出NoSuchElementException异常。

    (3)判断队列是否为空queue.isEmpty( ).

    (4)新建队列 Queue<TreeNode> queue = new LinkedList<TreeNode>( );

     

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) {
            ArrayList result = new ArrayList();
            if (root == null) {
                return result;
            }
            
            Queue<TreeNode> queue = new LinkedList<TreeNode>();
            queue.offer(root);
            while (!queue.isEmpty()) {
                ArrayList<Integer> level = new ArrayList<Integer>();
                int size =  queue.size();
                for(int i = 0; i < size; i++) {
                    TreeNode node = queue.poll();
                    level.add(node.val);
                    if (node.left != null) {
                        queue.offer(node.left);
                    }
                    if (node.right != null) {
                        queue.offer(node.right);
                    }
                }
                result.add(level);
            }
            return result;
        }
    }
     
  • 相关阅读:
    在Android迷你广告上添加浮动的关闭按钮
    Android之搜索框的纯代码实现
    Android控件在点击、选择时背景变化(button、listview)
    在限制中突破——你所不知道的iPhone输入法秘密
    MVC、MVP与MVT
    dede 添加自定义函数
    织梦函数调用
    织梦开启PHP 标签
    织梦数据库函数调用
    织梦调用文章 ID (来源:百度知道)
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/5779778.html
Copyright © 2020-2023  润新知