队列完成BFS

  • 判断根节点是否为空,非空,先进入队列中。
  • 判断出节点是否为空,非空,保持val值,左右子节点进入队列。
  • 队列弹出后,紧跟判断,为空停止循环
/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    vector<int> PrintFromTopToBottom(TreeNode* root) {
		//bfs
		queue<TreeNode*> q;
		vector<int> v;
		if(!root)
		{
			return v;
		}
		q.push(root);
		while(q.size())
		{
			TreeNode* node=q.front();
			if(node)
			{
				v.push_back(node->val);
				q.push(node->left);
				q.push(node->right);
			}
			q.pop();

		}
		return v;
    }
};