Leetcode 102 二叉树的层次遍历 C++

思路:广度优先搜索BFS.
用一个队列q,用来存储二叉树的节点。首先将根节点放进去,然后利用while循环来判断什么时候结束。然后利用for循环一层一层的输出。之所以可以这样做,是因为for循环中提前获取了q的大小,此时q的大小就是每一层节点的大小,然后逐步递减,虽然q的大小一直在变化,但在执行for循环的之前,q的大小就是下一层二叉树节点的大小。

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root) return {};
        vector<vector<int> > ans;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty())
        {
            vector<int> tmp;
            for(int i=q.size();i>0;--i)
            {
                TreeNode* t=q.front();q.pop();
                tmp.push_back(t->val);
                if(t->left) q.push(t->left);
                if(t->right) q.push(t->right);
            }
            ans.push_back(tmp);
        }
        return ans;
        
    }
};

猜你喜欢

转载自blog.csdn.net/qq_43387999/article/details/87873170