240
笔下虽有千言,胸中实无一策

30 Day Challenge Day 1 | Leetcode 107. Binary Tree Level Order Traversal II

题解

这道题是Easy级别,算是BFS的典型题,适合用来找手感。

非常典型的套路是,用一个队列结构(queue)保存一层的信息,那么下一次迭代的时候,就可以通过队列先进先出的顺序,根据上一层的信息去操作。

class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        if (!root) return vector<vector<int>>();
        
        vector<vector<int> > res;
        
        queue<TreeNode*> q;
        q.push(root);
        
        while (!q.empty()) {
            vector<int> level;
            int size = q.size();
            for (int i = 0; i < size; ++i) {
                TreeNode* node = q.front();
                q.pop();
                level.push_back(node->val);
                if (node->left) q.push(node->left);
                if (node->right) q.push(node->right);
            }
            res.insert(res.begin(), level);
        }
        
        return res;
    }
};
posted @ 2020-07-03 04:44  CasperWin  阅读(69)  评论(0编辑  收藏  举报