Java中队列的使用


Java中队列的使用

  • 注意事项
  • curd
    • create
      • add(obj): 增加一个元素,如果队列已满,则抛出异常
      • offer(obj): 添加一个元素并返回true,如果队列已满,则返回false
    • update
      • set(index, obj)
    • retrieve
      • element(): 返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常
      • peek(): 返回队列头部的元素,如果队列为空,则返回null
    • delete
      • remove(): 移除并返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常
      • poll(): 移除并返问队列头部的元素,如果队列为空,则返回null
  • 样例

注意事项

  • java.util.Queue是一个抽象类,不能实例化
  • java.util.LinkedList实现了Queue,可以当作队列来使用

样例

import java.util.*;

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

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList>
     */
    public ArrayList> levelOrder (TreeNode root) {
        // write code here
        ArrayList> res = new ArrayList<>();
        if (root == null) return res;
        LinkedList nodes = new LinkedList<>();
        nodes.add(root);
        while (!nodes.isEmpty()) {
            int n = nodes.size();
            ArrayList layer = new ArrayList<>(n);
            for (int i = 0; i < n; i++) {
                TreeNode head = nodes.poll();
                
                layer.add(head.val);
                if (head.left != null) nodes.add(head.left);
                if (head.right != null) nodes.add(head.right);
                
            }
            res.add(layer);
        }
        return res;
        
    }
}

参考


二叉树的层序遍历