题目描述:
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
题目解答:
class Solution {
void dfs(TreeNode* node, int depth, vector<int>& ans) {
if (node == nullptr)
return;
if (depth == ans.size())
ans.push_back(node->val);
dfs(node->right, depth + 1, ans);
dfs(node->left, depth + 1, ans);
}
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> ans;
if (!root)
return ans;
dfs(root, 0, ans);
return ans;
}
};
题目思路:
利用深度优先搜索来遍历二叉树,并在每一层只记录最右侧的节点值。由于先遍历右子节点再遍历左子节点,确保了每一层最先访问的是最右侧的节点。