//给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 // // // // 示例 1: // // // // //输入: [1,2,3,null,5,null,4] //输出: [1,3,4] // // // 示例 2: // // //输入: [1,null,3] //输出: [1,3] // // // 示例 3: // // //输入: [] //输出: [] // // // // // 提示: // // // 二叉树的节点个数的范围是 [0,100] // -100 <= Node.val <= 100 // // Related Topics 树 深度优先搜索 广度优先搜索 二叉树 // 👍 502 👎 0 package leetcode.editor.cn; import com.code.leet.entiy.TreeNode; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; //199:二叉树的右视图 public class BinaryTreeRightSideView { public static void main(String[] args) { //测试代码 Solution solution = new BinaryTreeRightSideView().new Solution(); } //力扣代码 //leetcode submit region begin(Prohibit modification and deletion) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List rightSideView(TreeNode root) { List list = new ArrayList<>(); if (root == null) { return list; } Queue queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { int size = queue.size(); for (int i = 1; i <= size; i++) { TreeNode node = queue.poll(); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } if (i == size) { list.add(node.val); } } } return list; } } //leetcode submit region end(Prohibit modification and deletion) }