劍指offer題解C++【22】從上往下列印二叉樹
阿新 • • 發佈:2019-01-22
題目描述
從上往下打印出二叉樹的每個節點,同層節點從左至右列印。
解題思路
二叉樹的層次遍歷,藉助一個佇列實現。
建立一個佇列,其中元素的型別為二叉樹的節點;
按照“根-左-右”的順序依次將二叉樹的節點放入佇列,每次從隊頂取出對應節點的值,並刪除隊頂元素,直到佇列為空。
程式碼
/*
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> res;
if (root == nullptr)
return res;
queue<TreeNode *> myqueue;
myqueue.push(root);
while (!myqueue.empty()){
TreeNode * front = myqueue.front();
res.push_back(front->val);
myqueue.pop();
if (front->left)
myqueue.push(front->left);
if (front->right)
myqueue.push(front->right);
}
return res;
}
};