Leetcode 199. 二叉树的右视图
题目
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <---
/ \
2 3 <---
\ \
5 4 <---
题解
我们可以尽可能的先遍历右子树,按照中右左的方式进行。另外用一个哈希表记录第i层第一次看见的数,也就是我们的答案。详细过程见代码
代码
unordered_map<int,int> m;
void search(TreeNode* root,int high){
if(root == NULL) return;
if(m.count(high) == 0) m[high]=root->val; //第high层第一次看到数
search(root->right,high+1);
search(root->left,high+1);
}
vector<int> rightSideView(TreeNode* root) {
search(root,0);
vector<int> ans;
int i=0;
while(m.count(i) != 0){
ans.push_back(m[i]);
i++;
}
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-right-side-view
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。