题目描述

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

示例:

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

思路解析

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

  • 建立一个queue

  • 遍历每层的节点时,把下一层的节点都存入到queue中

  • 每当开始新一层节点的遍历之前,先把新一层最后一个节点值存到结果中

动画演示

动画演示GIF加载有点慢,请稍等片刻^_^

参考代码

 1class Solution {
2public:
3    vector<int> rightSideView(TreeNode *root) {
4        vector<int> res;
5        if (!root) return res;
6        queue<TreeNode*> q;
7        q.push(root);
8        while (!q.empty()) {
9            res.push_back(q.back()->val);
10            int size = q.size();
11            for (int i = 0; i < size; ++i) {
12                TreeNode *node = q.front();
13                q.pop();
14                if (node->left) q.push(node->left);
15                if (node->right) q.push(node->right);
16            }
17        }
18        return res;
19    }
20};

代码截图


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 二叉树及其四大遍历
  2. 动画:面试算法之求二叉树的下一节点
  3. PHP简短而安全的数组遍历
  4. php+nodeJs+thrift协议,实现zookeeper节点数据自动发现
  5. 为什么推荐使用for-each而不是for循环遍历元素?
  6. jQuery的DOM操作实例(3)——创建节点&&编写一个弹窗
  7. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元
  8. jQuery遍历祖先元素:parentsUntil
  9. jQuery在点击按钮上迭代/循环遍历数据表

随机推荐

  1. 正确理解 PHP 的重载
  2. 2021最新swoole视频教程推荐(从入门到高级
  3. 匿名函数
  4. PHP中global与$GLOBALS的区别
  5. PHP中output buffering的原理及应用
  6. PHP将数组编码gbk和utf-8相互转换
  7. GD库生成图片验证码
  8. PHP编程20大效率要点
  9. 多进程命名管通通信【无血缘关系进程】PH
  10. PHP验证身份证格式