题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印
思路:
借助一个队列,先把根节点入队,每打印一个节点的值时,也就是打印队列头的节点时,都会把它的的左右孩子入队,并且把该节点出队。直到队列为空。
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> res;
if(root==NULL)
return res;
deque<TreeNode*> deq;
deq.push_back(root);
while(deq.size()){
TreeNode* pNode=deq.front();//取出队头的元素打印,然后把的字节节点入队
deq.pop_front();//打印的元素出队
//printf("%d ",pNode->val);
res.push_back(pNode->val);
if(pNode->left){
deq.push_back(pNode->left);//左孩子入队
}
if(pNode->right){
deq.push_back(pNode->right);//右孩子入队
}
}
return res;
}
};