本文主要是介绍LeetCode 199——二叉树的右视图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
阅读目录
- 1. 题目
- 2. 解题思路
- 3. 代码实现
1. 题目
2. 解题思路
从顶部到底部,从右侧能看到的节点值,也就是树的每一层的最右边的一个节点。
所以,我们对树进行层次遍历,从左到右访问每一层的节点,取每层的最后一个节点值即可。
可参考,LeetCode 102 ——二叉树的层次遍历。
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;}
};
这篇关于LeetCode 199——二叉树的右视图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!