Fork me on GitHub

199.二叉树的右视图

题目描述

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

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

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

解决方案

思路:与之前二叉树的层次遍历类似的,该问题需要用到队列,

  • 建立一个queue
  • 遍历每层的节点时,把下一层的节点都存入到queue中
  • 每当开始新一层节点的遍历之前,先把新一层最后一个节点值存到结果中
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    /**
    * 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<int> rightSideView(TreeNode* root) {
    vector<int> res;
    queue<TreeNode*> q;
    if(root == NULL)
    return res;
    q.push(root);

    while(!q.empty())
    {
    res.push_back(q.back()->val);
    int size=q.size();
    for(int i=0;i<size;++i)
    {
    TreeNode *node = q.front();
    q.pop();
    if(node->left) q.push(node->left);
    if(node->right) q.push(node->right);
    }
    }
    return res;
    }
    };

本文标题:199.二叉树的右视图

文章作者:LiuXiaoKun

发布时间:2019年02月13日 - 17:02

最后更新:2019年02月13日 - 17:02

原始链接:https://LiuZiQiao.github.io/2019/02/13/199二叉树的右视图/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%