给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
在二叉树问题中,递归dfs是很常用的方法,本题同样适用。
dfs: 分别考虑左右子树的右视图,
若左子树的右视图的高度>右子树的右视图高度, 则右视图为右子树的右视图+左子树剩余的右视图
若左子树的右视图的高度>右子树的右视图高度, 则右视图为右子树的右视图
代码(c++)
vector <int> res;
if (root==NULL) return res;
res.push_back(root->val);
vector<int> left_rightView = rightSideView(root->left);
vector<int> right_rightView = rightSideView(root->right);
for (int i = 0; i<right_rightView.size(); ++i)
res.push_back(right_rightView[i]);