树的层次遍历可以使用广度优先搜索实现。从根节点开始搜索,每次遍历同一层的全部节点,使用一个列表存储该层的节点值。
class Solution {
public:
vector<vector<int>> res;
vector<vector<int>> levelOrderBottom(TreeNode* root) {
if(!root){
return res;
}
queue<TreeNode*> que;
vector<int> temp;
que.push(root);
TreeNode* last = root;
TreeNode* nlast = NULL;
while(!que.empty()){
TreeNode* node = que.front();
que.pop();
temp.push_back(node->val);
if(node->left){
nlast = node->left;
que.push(node->left);
}if(node->right){
nlast = node->right;
que.push(node->right);
}if(node == last){
res.push_back(temp);
temp.clear();
last = nlast;
}
}
reverse(res.begin(),res.end());
return res;
}
};