199.二叉树的右视图(DFS)

avatar
作者
猴君
阅读量:0

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

示例 1:

在这里插入图片描述

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

示例 2:

输入: [1,null,3]
输出: [1,3]

示例 3:

输入: []
输出: []

解题思路

本文使用dfs思想,先递归右子树,再递归左子树,当某个深度首次到达时,对应的节点就在右视图中。

/**  * Definition for a binary tree node.  * struct TreeNode {  *     int val;  *     TreeNode *left;  *     TreeNode *right;  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}  * };  */ class Solution {     vector<int> re;     void dfs(TreeNode* node,int deep){         if(!node){             return;         }         if(deep==re.size()){             re.push_back(node->val);         }         dfs(node->right,deep+1);         dfs(node->left,deep+1);     }       public:     vector<int> rightSideView(TreeNode* root) {         dfs(root,0);         return re;      } }; 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!