欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

广度优先搜索BFS:力扣102. 二叉树的层序遍历

程序员文章站 2024-01-11 07:57:58
...

1、题目描述:

广度优先搜索BFS:力扣102. 二叉树的层序遍历

2、题解:

BFS
在处理每一层时,一口气处理完。
python代码:

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        # BFS
        res = []
        if not root:
            return res
        queue = collections.deque()
        queue.append(root)
        while queue:
            temp = []
            size = len(queue)
            for _ in range(size):
                node = queue.popleft()
                temp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            res.append(temp)
        return res

C++代码:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> res;
        if (!root) return res;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            int currentLevelSize = q.size();
            res.push_back(vector<int>());
            for (int i =1;i <= currentLevelSize;++i){
                auto node = q.front();q.pop();
                res.back().push_back(node->val);
                if(node->left) q.push(node->left);
                if (node->right) q.push(node->right);
            }
        }
        return res;
    }
};

3、复杂度分析:

时间复杂度:O(N)
空间复杂度:O(N)

相关标签: LeetCode