041二叉树的层序遍历

二叉树的层序遍历

题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/description/?envType=study-plan-v2\&envId=top-100-liked

我的解答:

复制代码
public List<List<Integer>> levelOrder(TreeNode root) {
    List<List<Integer>> ans = new ArrayList<>();
    if(root==null){
        return ans;
    }
    Queue<TreeNode> queue = new LinkedList<>();
    queue.offer(root);
    int cnt;//当前层的节点个数
    while(!queue.isEmpty()){
        cnt = queue.size();
        List<Integer> list = new ArrayList<>();
        while(cnt > 0){
            TreeNode node = queue.poll();
            list.add(node.val);
            cnt--;
            if(node.left != null){
                queue.offer(node.left);
            }
            if(node.right != null){
                queue.offer(node.right);
            }
        }
        ans.add(list);
    }
    return ans;
}

分析:代码的时间复杂度为O(n),空间复杂度为O(n)。解题思路:利用队列存储和拓展每一层的节点,首先将根节点入队,每轮拓展前先计算当前队列的大小,此时队列的大小就是当前层的节点总个数,假设为cnt,之后循环出队cnt个节点并将它们的左右节点按先左后右的顺序加入队列,重复此操作直到队列为空即可。

看了官方题解后的解答:

复制代码
//广度优先搜索(解题思路与我的解答一致)
//时间复杂度:O(n)
//空间复杂度:O(n)

分析:

​ 官方解答与我的解答一致,故不再赘述。

总结

  • 本题主要利用队列实现二叉树的广度优先搜索,解题思路较为简单。
相关推荐
1000世界小札11 小时前
《大话数据结构》第9章精读:归并排序与快速排序完整 C++ 实现
数据结构·c++·算法
Xin77019 小时前
LeetCode 23.合并 K 个升序链表(分治递归)
leetcode
Nil2081 天前
leetcode 105从前序和中序遍历序列构造二叉树
算法·leetcode·职场和发展
一直C1 天前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表
淡海水1 天前
04-02-哈希-Dictionary-TKey-TValue-上-核心数据结构
数据结构·算法·c#·哈希算法·编译·字典·dictionary
Nil2081 天前
leetcode 114二叉树展开为链表
leetcode·链表·深度优先
cz07101 天前
hot100_搜索二维矩阵 II
算法·leetcode
疯狂打码的少年1 天前
【数据结构】板块总结 + 下期预告(数据库技术)
数据结构·笔记·算法
郝学胜-神的一滴1 天前
Effective Python 条款 1:确认你正在使用的 Python 版本
开发语言·数据结构·python·程序人生·算法
圣保罗的大教堂1 天前
leetcode 3718. 缺失的最小倍数 简单
leetcode