題目:從上往下打印出二叉樹的每個節點,同層節點從左至右打印。
分析:藉助一個隊列,先將根結點的指針入隊列,出來時訪問它,然後將它的左右孩子帶到隊列中(這也是隊列中放的是結點的指針原因,因爲要通過它找到左右孩子),然後只要隊不空,就訪問隊頭結點,帶左右孩子。。。直到隊爲空,說明所有元素訪問完了。
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> v;
if(root==nullptr)
return v;
TreeNode* cur=root;
queue<TreeNode*> q;
q.push(cur);
while(!q.empty())
{
v.push_back(q.front()->val);//先訪問隊頭元素
//將左右孩子帶進隊列
if(q.front()->left!=nullptr)
{
q.push(q.front()->left);
}
if(q.front()->right!=nullptr)
{
q.push(q.front()->right);
}
q.pop();
}
return v;
}