題目:
從上往下打印出二叉樹的每個節點,同層節點從左至右打印。
題目解析我已經寫入到註釋裏面了!
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
//從上到下打印二叉樹(從左到右邊)
//可以使用隊列,首先將根節點放到隊列中
//取出隊列中的節點,如果有左右子樹,就先將左子樹節點放入隊列,然後是右子樹
//知道隊列的爲空
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int>result;
if(root == nullptr)
return result;
queue<TreeNode*> temp;
temp.push(root);
while(temp.size()>0){
TreeNode* pNode = temp.front();
result.push_back(pNode->val);
temp.pop();
if(pNode->left!=nullptr)
temp.push(pNode->left);
if(pNode->right!=nullptr)
temp.push(pNode->right);
}
return result;
}
};