面试题:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:先将根节点放入队列,在打印根节点时,看它有没有左右子节点,如果有左右子节点就将左右子节点放入队列中,然后让根节点出队列,以此规律,每打印一个节点都要判断它是否有子节点,直到队列为空,那这棵树也就打印完了
以下以C++代码实现:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> res;
if(root==NULL)
{
return res;
}
queue<TreeNode*> myqueue;
myqueue.push(root);
while(!myqueue.empty())
{
root = myqueue.front();
res.push_back(root->val);
myqueue.pop();
if(root->left!=NULL)
{
myqueue.push(root->left);
}
if(root->right!=NULL)
{
myqueue.push(root->right);
}
}
return res;
}