题目描述

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
No.199 二叉树的右视图(Medium) - 图1

返回[1, 3, 4]

思路

层序遍历,每一层的最后一个结点组成的就是右视图。
No.102做法几乎一致。

代码

  1. class Solution {
  2. public List<Integer> rightSideView(TreeNode root) {
  3. List<Integer> result = new ArrayList<>();
  4. if (root == null) {
  5. return result;
  6. }
  7. Deque<TreeNode> queue = new ArrayDeque<>();
  8. queue.offerLast(root);
  9. while (!queue.isEmpty()) {
  10. int size = queue.size();
  11. for (int i = 0; i < size; i++) {
  12. TreeNode temp = queue.pollFirst();
  13. if (temp.left != null) {
  14. queue.offerLast(temp.left);
  15. }
  16. if (temp.right != null) {
  17. queue.offerLast(temp.right);
  18. }
  19. if (i == size - 1) {
  20. result.add(temp.val);
  21. }
  22. }
  23. }
  24. return result;
  25. }
  26. }