LeetCode 199. 二叉树的右视图
题目描述
给定一个二叉树的 根节点 root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例
示例 1:
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
解释:
示例 2:
输入:root = [1,2,3,4,null,null,null,5]
输出:[1,3,4,5]
解释:
示例 3:
输入:root = [1,null,3]
输出:[1,3]
示例 4:
输入:root = []
输出:[]
解法
1.层次遍历
解题思路
我们知道层次遍历是使用队列把每一层的元素先装起来,然后再不断迭代pop,如果我们在pop之前把队列的最后一个元素装入ans数组,那么就是题中的右视图答案。
class Solution {
public:vector<int> rightSideView(TreeNode* root) {vector<int> ans;if(root == nullptr) return ans;queue<TreeNode*> q;q.push(root);while(!q.empty()){ans.push_back(q.back() -> val);int s = q.size();for(int i = 0;i < s;i ++){TreeNode* b = q.front();if(b -> left != nullptr) q.push(b -> left);if(b -> right != nullptr) q.push(b -> right);q.pop();}}return ans;}
};
时间复杂度O(N),空间复杂度O(N)