本文主要是介绍Binary Tree Right Side View问题及解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
示例:
Given the following binary tree,
1 <---/ \ 2 3 <---\ \5 4 <---
You should return [1, 3, 4]
.
问题分析:
这题的本意是要求我们每一层的遍历后的最后一个节点输出,于是我们可以利用层次遍历法求解。
过程详见代码:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> rightSideView(TreeNode* root) {vector<int> res;if (root == NULL) return res;queue<TreeNode*> q;q.emplace(root);while (!q.empty()){int size = q.size();TreeNode* root = NULL;for (int i = 0; i < size; i++){root = q.front();q.pop();if (root->left) q.emplace(root->left);if (root->right) q.emplace(root->right);}res.emplace_back(root->val);}return res;}
};
这篇关于Binary Tree Right Side View问题及解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!