题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
/*
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) {
queue<TreeNode* > q;
vector<int> res;
//如果为空直接返回res, 不能直接返回NULL
//因为返回值类型是vector<int>, 不是指针类型
if(root==NULL)
return res;
q.push(root);
while(!q.empty())
{
//每次从对列头部取节点
TreeNode* tmp = q.front();
res.push_back(tmp->val);
q.pop();
//将左节点压入队列
if(tmp->left!=NULL)
q.push(tmp->left);
//将右节点压入队列
if(tmp->right!=NULL)
q.push(tmp->right);
}
return res;
}
};
京公网安备 11010502036488号