leetCode(21):Binary Tree Right Side View

Given a binary tree, imagine yourself standing on therightside of it, return the values of the nodes you can see ordered from top to bottom.

For example:Given the following binary tree,

1<— / \23<— \\ 54<—

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) {queue<TreeNode*> nodes;vector<int> vec;vector< vector<int> > result;vector<int> tmp;if(NULL==root)return vec;nodes.push(root);while(!nodes.empty()){int length=nodes.size();int i=0;while(i<length){TreeNode* tmpNode=nodes.front();tmp.push_back(tmpNode->val);if(tmpNode->left)nodes.push(tmpNode->left);if(tmpNode->right)nodes.push(tmpNode->right);nodes.pop();i++;}result.push_back(tmp);tmp.clear();}for(size_t i=0;i<result.size();++i){vec.push_back(result[i][result[i].size()-1]);}return vec;}};

,偶尔,我一个人站在黄昏的荒野,

leetCode(21):Binary Tree Right Side View

相关文章:

你感兴趣的文章:

标签云: