题目:
从上到下打印出二叉树的每个节点,同层节点从左至右打印。
解法:
1、实质就为二叉树的层次遍历。
2、用一个队列,依次记录当前节点的左右子节点。
3、循环让队列pop出元素,直到队列为空,即遍历完毕。
代码如下:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> res;
queue<TreeNode*> queue;
if(root==NULL)
return res;
queue.push(root);
TreeNode* temp;
while(!queue.empty())
{
temp = queue.front();
res.push_back(temp->val);
queue.pop();
if(temp->left!=NULL) queue.push(temp->left);
if(temp->right!=NULL) queue.push(temp->right);
}
return res;
}