[路飞]_leetcode-199-二叉树的右视图

简介: leetcode-199-二叉树的右视图

网络异常,图片无法展示
|


[题目地址][B站地址]


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


示例 1:


网络异常,图片无法展示
|


输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
复制代码


示例 2:


输入: [1,null,3]
输出: [1,3]
复制代码


示例 3:


输入: []
输出: []
复制代码


提示:


  • 二叉树的节点个数的范围是 [0,100]
  • -100 <= Node.val <= 100


解题思路


本题要获取的右视图,其实就是每一层最右侧节点的值,


所以我们需要进行层序遍历,并获取到每一层最右侧的节点的值。


这里我们可以采用前序遍历或者中序遍历,只要保证右子树是最后遍历到的即可,


遍历过程中记录当前节点的深度,并将当前节点值赋值给结果数组对应下标元素。


因为是最后处理的右子树,所以最后数组中对应下标位置的值就是当前层最右侧节点的值。


代码实现


var rightSideView = function(root) {
  // 初始化结果数组
  const res = [];
  // 前序遍历,并记录当前节点的深度
  function preorder(node,deep){
    if(node === null) return;
    // 更新对应下标值为当前节点的值
    res[deep] = node.val;
    // 递归处理左子树
    preorder(node.left,deep+1);
    // 递归处理右子树
    preorder(node.right,deep+1);
  }
  preorder(root,0);
  // 返回结果数组
  return res;
};
复制代码


至此我们就完成了 leetcode-199-二叉树的右视图


如有任何问题或建议,欢迎留言讨论!

相关文章
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
59 6
|
2月前
【LeetCode 31】104.二叉树的最大深度
【LeetCode 31】104.二叉树的最大深度
20 2
|
2月前
【LeetCode 29】226.反转二叉树
【LeetCode 29】226.反转二叉树
18 2
|
2月前
【LeetCode 28】102.二叉树的层序遍历
【LeetCode 28】102.二叉树的层序遍历
16 2
|
2月前
【LeetCode 43】236.二叉树的最近公共祖先
【LeetCode 43】236.二叉树的最近公共祖先
20 0
|
2月前
【LeetCode 38】617.合并二叉树
【LeetCode 38】617.合并二叉树
15 0
|
2月前
【LeetCode 37】106.从中序与后序遍历构造二叉树
【LeetCode 37】106.从中序与后序遍历构造二叉树
18 0
|
2月前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
21 0
|
2月前
【LeetCode 32】111.二叉树的最小深度
【LeetCode 32】111.二叉树的最小深度
19 0
|
4月前
|
存储 算法
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题