LEETCODE解題記錄——按層輸出二叉樹
阿新 • • 發佈:2019-02-20
給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:
給定二叉樹: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其層次遍歷結果: [ [3], [9,20], [15,7] ]
題目分析:題目要求按層次遍歷二叉樹,並且將每層的結果存入一維陣列中,最後總的結果存入二維陣列中並且返回。
根據題目要求,因為每一層的結果都要輸入一維陣列中,我們可以考慮引入一個cur值來記錄每一層節點的數目。
同時,由於要遍歷完整棵樹,所以可以考慮引入一個佇列,將每一層的節點存入佇列中,遍歷到該節點後,將其孩子存入佇列後,該節點出隊。以此迴圈,即可遍歷完整棵樹。‘
vector<vector<int> > levelOrder(TreeNode* root) {
vector <vector <int> > res;
queue <TreeNode *> Queue;
if (!root)
return res;
Queue.push(root); //根節點進隊
while (!Queue.empty()) {
int cur = Queue.size(); //當前層數的節點數量
vector <int> level;
for (int i = 0; i < cur; ++i) {
TreeNode *temp = Queue.front();
Queue.pop();
if (temp->left) //若當前層節點有孩子,則孩子進隊
Queue.push(temp->left);
if (temp->right)
Queue.push(temp->right);
level.push_back(temp->val); //結果存入level中
}
res.push_back(level);
}
return res;
}