content: package question0199_binary_tree_right_side_view;
  
  import java.util.ArrayList;
  import java.util.LinkedList;
  import java.util.List;
  import java.util.Queue;
  
  /**
   * 层序遍历。
   *
   * 时间复杂度和空间复杂度均是O(n)，其中n为二叉树中的节点个数。
   *
   * 执行用时：4ms，击败21.96%。消耗内存：35.7MB，击败40.25%。
   */
  public class Solution1 {
      public List<Integer> rightSideView(TreeNode root) {
          List<Integer> result = new ArrayList<>();
          if (null == root) {
              return result;
          }
          Queue<TreeNode> queue = new LinkedList<>();
          queue.add(root);
          while (!queue.isEmpty()) {
              int size = queue.size();
              List<Integer> list = new ArrayList<>();
              for (int i = 0; i < size; i++) {
                  TreeNode cur = queue.poll();
                  list.add(cur.val);
                  if (null != cur.left) {
                      queue.add(cur.left);
                  }
                  if (null != cur.right) {
                      queue.add(cur.right);
                  }
              }
              result.add(list.get(list.size() - 1));
          }
          return result;
      }
  }