算法笔记
本题于昨天的层序遍历在编程部分基本一致,只是对输出要求有所不同,十分适合作为二叉树层序遍历的复习题去练习。
题目描述
解题步骤
本题解题非常简单只需要在之前层序遍历的基础上反转整个作为输出的二维数组即可,这里就不多加赘述。
代码部分
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> result;
queue<TreeNode*> que;
if(root != nullptr) {
que.push(root);
}
while(!que.empty()) {
int size = que.size();
vector<int> path;
for(int i = 0; i < size; i++) {
TreeNode* node = que.front();
que.pop();
path.push_back(node -> val);
if(node -> left) {
que.push(node -> left);
}
if(node -> right) {
que.push(node -> right);
}
}
result.push_back(path);
}
reverse(result.begin(), result.end());
return result;
}
};
结语
近一周的题目都与层序遍历有关,目的也是为了加深对层序遍历的理解。