LeetCode 199——二叉树的右视图
1. 题目
2. 解题思路
从顶部到底部,从右侧能看到的节点值,也就是树的每一层的最右边的一个节点。
所以,我们对树进行层次遍历,从左到右访问每一层的节点,取每层的最后一个节点值即可。
3. 代码实现
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> ret;
if (root == nullptr) {
return ret;
}
queue<TreeNode*> q;
q.push(root);
TreeNode* tail = root;
while (!q.empty()) {
vector<int> layer_vals;
TreeNode* node = nullptr;
while (1) {
node = q.front();
layer_vals.push_back(node->val);
if (node->left) {
q.push(node->left);
}
if (node->right) {
q.push(node->right);
}
q.pop();
if (node == tail) {
break;
}
}
tail = q.back();
if (!layer_vals.empty()) {
ret.push_back(layer_vals.back());
}
}
return ret;
}
};
原文地址:https://blog.csdn.net/seniusen/article/details/137890233
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!