给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [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;}
};