LeetCode 199. 二叉树的右视图(Binary Tree Right Side View)

199. 二叉树的右视图
199. Binary Tree Right Side View

题目描述
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.

LeetCode199. Binary Tree Right Side View

示例:

输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:

   1            <---
 /   2     3         <---
 \       5     4       <---

The core idea of this algorithm:

  1. Each depth of the tree only select one node.
  2. View depth is current size of result list.

Java 实现

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}
import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        rightView(root, result, 0);
        return result;
    }

    public void rightView(TreeNode curr, List<Integer> result, int currDepth) {
        if (curr == null) {
            return;
        }
        if (currDepth == result.size()) {
            result.add(curr.val);
        }
        rightView(curr.right, result, currDepth + 1);
        rightView(curr.left, result, currDepth + 1);
    }
}

相似题目

  • 116. 填充每个节点的下一个右侧节点指针
  • 545. 二叉树的边界

参考资料

原文地址:https://www.cnblogs.com/hglibin/p/10890586.html

时间: 2024-10-17 08:45:03

LeetCode 199. 二叉树的右视图(Binary Tree Right Side View)的相关文章

leetcode.199二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <--- 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-right-side-view著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 运用层次遍历,记录

LeetCode 199 二叉树的右视图

题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / 2 3 <--- \ 5 4 <--- 解题思路: 层次遍历.每次记录每一层的最右边的那个节点,并输出.这里介绍一个非常好用的模板,这个板子可以用来求高度.某一层节点的个数.树的最大宽度等. 代码: 1 /** 2 * Definition for a binary tree

199. 二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / 2 3 <--- \ 5 4 <--- class Solution { public List<Integer> rightSideView(TreeNode root) { List<Integer> res = new ArrayList<>(

领扣(LeetCode)二叉树的右视图 个人题解

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / 2 3 <--- \ 5 4 <--- 拿到这题,一开始的思路是强行遍历右节点,后来发现如果右节点的深度低于左节点时,左节点也是输于右视图的一部分,答案错误.然后参考了相关做法,发现正确的做法应该是层次遍历,判断出每一层的所有内容,然后取最右边的值加入答案.直到最后一个层次遍历完毕.

199二叉树的右视图

题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 来源: https://leetcode-cn.com/problems/binary-tree-right-side-view/ 法一: 自己的代码 构建一个队列,每次都从右边取值,用双层循环实现层序遍历. # 执行用时 :32 ms, 在所有 python3 提交中击败了98.01% 的用户 # 内存消耗 :12.8 MB, 在所有 python3 提交中击败了100.00%的用户 # Def

leetcode 102 二叉树的层次遍历 (Binary Tree Level Order Traversal)

我的方法.每个队列保存一层的node: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> levelO

【LeetCode 144_二叉树_遍历】Binary Tree Preorder Traversal

解法一:非递归 1 vector<int> preorderTraversal(TreeNode* root) 2 { 3 vector<int> res; 4 if (root == NULL) 5 return res; 6 7 stack<TreeNode*> node_stack; 8 TreeNode *p = root; 9 while (p || !node_stack.empty()) { 10 if (p) { 11 res.push_back(p-&

【LeetCode】199. Binary Tree Right Side View

Binary Tree Right Side View Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom. For example:Given the following binary tree, 1 <--- / 2 3 <--- \ 5 4 <--- Y

【一天一道LeetCode】#104. Maximum Depth of Binary Tree

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源:https://leetcode.com/problems/maximum-depth-of-binary-tree/ Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along th