算法day37 二叉树的层序遍历

题目描述

思路:队列
二叉树的层序遍历是二叉树遍历的经典问题,我们在对二叉树进行层序遍历时,队列的使用是非常合适的。我们记录每一层的节点个数,这样当出队时我们就可以知道上一层的节点是否出队完毕,而上一层的节点出队的同时,我们使这个节点的左右孩子加入到队列中,以此循环直到队列为空,将用以收集的二维数组返回。具体的代码如下。

vector<vector<int>> levelOrder(TreeNode* root) {
    vector<vector<int>> res;
    queue<TreeNode*> que;
    if(root) que.push(root);

    while(!que.empty()){
        int size = que.size();
        vector<int> vec;
        while(size--){
            TreeNode *node = que.front();
            vec.push_back(node->val);
            que.pop();
            if(node->left){
                que.push(node->left);
            }
            if(node->right){
                que.push(node->right);
            }

        }
        res.push_back(vec);

    }
    return res;
}

时间复杂度:O(m*n)
空间复杂度:O(m*n)

END

posted on 2025-06-10 23:05  sakura430  阅读(7)  评论(0)    收藏  举报