leetcode_199题——Binary Tree Right Side View(广度优先搜索,队列queue)

#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()

{



}

  

你可能感兴趣的:(LeetCode)