给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
这里可采用深度优先和广度优先搜索,我选择dfs。
void preorderTraversal(TreeNode *root, vector<int>& output, int layer) {
if(nullptr == root)
return;
if(layer >= output.size())
output .push_back(root->val);
preorderTraversal(root->right, output, layer + 1);
preorderTraversal(root->left, output, layer + 1);
}
vector<int> rightSideView(TreeNode* root) {
vector<int> output;
preorderTraversal(root, output, 0);
return output;
}