当前位置: 代码迷 >> 综合 >> Leetcode--二叉树的右视图
  详细解决方案

Leetcode--二叉树的右视图

热度:85   发布时间:2024-01-28 08:38:43.0

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

示例:

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

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

思路

 可以发现,在按照中、右、左的顺序递归遍历二叉树时,每个深度中第一次出现的节点组成右视图

/*** 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> res;void getRight(TreeNode* root, int dep){// 空节点,返回if(root== NULL) return;// 第一次在该深度出现的节点if(dep>= res.size()){res.push_back(root->val);}// 递归遍历子节点getRight(root->right, dep+ 1);getRight(root->left, dep+ 1);}vector<int> rightSideView(TreeNode* root) {getRight(root, 0);return res;}
};