Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]想法: 這題就基本的 tree traverse 的問題,BFS 解即可。寫完發現自己一年前就寫過這題,比較了一下發現現在直覺
的寫法變得簡潔了一些,多練習還是有用的^^。
完整程式碼:class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
if (root == nullptr) { return {}; }
vector<vector<int>> res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int q_size = q.size();
vector<int> level;
for (int i = 0; i < q_size; i++) {
auto cur = q.front();
q.pop();
level.emplace_back(cur->val);
if (cur->left != nullptr) { q.push(cur->left); }
if (cur->right != nullptr) { q.push(cur->right);}
}
res.emplace_back(level);
}
return res;
}
};
沒有留言:
張貼留言