做网站的接私活犯法吗,网页设计基础知识选择题,欧洲网站设计,我想做个软件平台要多少钱199. 二叉树的右视图 题目
给定一个二叉树的 根节点 root#xff0c;想象自己站在它的右侧#xff0c;按照从顶部到底部的顺序#xff0c;返回从右侧所能看到的节点值。
示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3… 199. 二叉树的右视图 题目
给定一个二叉树的 根节点 root想象自己站在它的右侧按照从顶部到底部的顺序返回从右侧所能看到的节点值。
示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 分析
树的层序遍历判断遍历到最右侧时加入结果中
题解
/*** 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 ListInteger rightSideView(TreeNode root) {// 广度优先层序遍历ListInteger list new ArrayList();// list.add(root.val);if(root null){return list;}QueueTreeNode queue new LinkedList();queue.add(root);// 不能用queue是否为空来判断这一层有没有遍历完因为父节点的左子树下面有节点时queue会被重新填充等到父节点的右子树判断时已经不准确了所以要在这一层遍历之前获取层的数量while(!queue.isEmpty()){Integer size queue.size();for(int i 0; i size; i){TreeNode node queue.poll();if(node.left ! null){queue.add(node.left);}if(node.right ! null){queue.add(node.right);}// 利用size判断这层后面还有没有没有就加入结果中if(i size - 1){list.add(node.val);}}}return list;}
}