二叉树类型第18篇解题报告

leetcode第199题:二叉树的右视图

https://leetcode-cn.com/problems/binary-tree-right-side-view/

【题目】

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

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

输出: [1, 3, 4]

解释:

1

/ \

2 3

\ \

5 4

【思路】

使用层次遍历,只保留每一层最后一个元素。

【代码】

python版本# Definition for a binary tree node.

# class TreeNode(object):

# def __init__(self, x):

# self.val = x

# self.left = None

# self.right = None

class Solution(object):

def rightSideView(self, root):

"""

:type root: TreeNode

:rtype: List[int]

"""

if not root:

return []

res = [0]

p = [root]

q = []

while len(p) != 0 or len(q) != 0:

if len(p) == 0:

p = q

q = []

res.append(0)

tmp = p.pop(0)

res[-1] = tmp.val

if tmp.left:

q.append(tmp.left)

if tmp.right:

q.append(tmp.right)

return res

C++版本/**

* 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 rightSideView(TreeNode* root) {

vector res;

if(!root)

return res;

res.push_back(0);

queue p;

queue q;

p.push(root);

while(p.size() != 0 || q.size() != 0){

if(p.size() == 0){

while(q.size() != 0){

p.push(q.front());

q.pop();

}

res.push_back(0);

}

TreeNode* tmp = p.front();

p.pop();

res[res.size()-1] = tmp->val;

if(tmp->left)

q.push(tmp->left);

if(tmp->right)

q.push(tmp->right);

}

return res;

}

};

二叉树的右视图 python_【leetcode刷题】T128-二叉树的右视图相关推荐

  1. LeetCode刷题笔记 二叉树 二叉搜索树的操作

    669 修剪二叉搜索树 ​ 给定一个二叉查找树和两个整数 L 和 R,且 L < R,试修剪此二叉查找树,使得修剪后所有节点的值都在 [L, R] 的范围内. ​ 输入是一个二叉查找树和两个整数 ...

  2. Leetcode刷题之二叉树遍历——迭代(显示栈)【CSDN博客】

    总结了一下二叉树前两种遍历方法,之后更新第三种 前序遍历代码 class Solution {public List<Integer> preorderTraversal(TreeNode ...

  3. Leetcode刷题236. 二叉树的最近公共祖先

    给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x 是 p.q 的祖先且 ...

  4. leetcode刷题:二叉树的中序遍历

    题目: 分析: 代码如下: class Solution { public:vector<int> inorderTraversal(TreeNode* root) {stack<T ...

  5. C#LeetCode刷题-树

    树篇 # 题名 刷题 通过率 难度 94 二叉树的中序遍历 61.6% 中等 95 不同的二叉搜索树 II 43.4% 中等 96 不同的二叉搜索树 51.6% 中等 98 验证二叉搜索树 22.2% ...

  6. ​LeetCode刷题实战623:在二叉树中增加一行

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

    LeetCode 刷题之旅(2020.05.22)--105. 从前序与中序遍历序列构造二叉树(中) 题目: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如, ...

  8. ​LeetCode刷题实战314:二叉树的竖直遍历

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. 一个算法笨蛋的12月leetCode刷题日记

    类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...

  10. LeetCode 刷题之路(python版)

    摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...

最新文章

  1. 那些方式可以合并php数组,合并数组(PHP)
  2. 学习python第四天内容回顾
  3. 2008_10_28_星期二
  4. 数据库开发——MySQL——单表查询
  5. way.js - 轻量级、持久化的双向绑定JS库
  6. jsDate对象和倒计时图片案例
  7. 微软私有云分享(R2)22 计算机配置文件与基础设置
  8. C# Azure 存储-Blob
  9. 京东二面:MySQL 主从延迟、读写分离 7 种解决方案!
  10. 保险营销观察报告:保险直播“带货”的现状、风险分析与未来研判
  11. MMOCR: OpenMMLab 全流程的文字检测识别理解工具箱
  12. Thrift协议的服务模型
  13. 异常:java.lang.NoSuchMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext
  14. AC日记——Roma and Poker codeforces 803e
  15. Eclipse\myeclipse加载项目building workspace过久
  16. 【手写字母识别】基于matlab GUI BP网络手写体大写字母识别【含Matlab源码 183期】
  17. Materialise Mimics Innovation Suite Research 19.0 X64安装包原版
  18. 服务器443端口响应代码,使用443端口远程服务器
  19. Uc页面加载完毕后页面字体变大
  20. [生存志] 第71节 阖闾五战入郢

热门文章

  1. 9.logstash
  2. 38. Linux 备份
  3. 4.设计包(design package)
  4. 文本不换行省略—input属性
  5. Go中函数作为值、类型传递。
  6. Android之apk优化
  7. jenkins 管理员账号丢失
  8. Ubuntu 安装hadoop 伪分布式
  9. Android平台下的ToDoList
  10. fmt—fmt:formatDate的输出格式