#include<iostream> #include<queue> #include<vector> using namespace std; // Definition for binary tree struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; /*这道题采用广度优先搜索的算法来做,一层一层的进行搜索,而在每一层将这一层所有的 结点加入到队列里面去,并记录下结点的个数,这些结点是从左到右依次加入了,当从队列出来这一层 队列的最后一个元素时,就是最右边的那个数。 */ vector<int> rightSideView(TreeNode *root) { queue<TreeNode*> temp;//用来计算的队列 int row_size=1; TreeNode* temp_node; vector<int> result_last; if(root==NULL) return result_last; temp.push(root); while(!temp.empty()) { while(row_size--) { temp_node=temp.front(); temp.pop(); if(row_size==0) result_last.push_back(temp_node->val); if(temp_node->left!=NULL) temp.push(temp_node->left); if(temp_node->right!=NULL) temp.push(temp_node->right); } row_size=temp.size(); } return result_last; } int main() { }
时间: 2024-10-22 02:34:49