题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
class Solution
{
public:
vector<int> PrintFromTopToBottom(TreeNode* root)
{
vector<int> res;
if (root == NULL) return res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty())
{
res.push_back(q.front()->val);
if (q.front()->left != NULL) q.push(q.front()->left);
if (q.front()->right != NULL) q.push(q.front()->right);
q.pop();
}
return res;
}
};
思路:首先从根节点开始遍历。在遍历根节点的同时把他的左右孩子保存到一个队里。之后出队头元素,与此同时保存头元素的左右孩子于队中。如此循环。当队列为空时,结束循环。