leetcode做题笔记102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

思路一:递归

cpp 复制代码
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){
    int** ans=(int**)malloc(sizeof(int*)*2000);
    *returnSize=0;
    if(!root) return NULL;
    int columnSizes[3000];
    struct TreeNode* queue[3000];
    int rear=0;int head=0;
    queue[rear++]=root;

    while(rear!=head){
        ans[(*returnSize)]=(int*)malloc(sizeof(int)*(rear-head));
        columnSizes[(*returnSize)]=rear-head;
        int start=head;
        head=rear;
        for(int i=start;i<head;i++){
            ans[(*returnSize)][i-start]=queue[i]->val;
            if(queue[i]->left) queue[rear++]=queue[i]->left;
            if(queue[i]->right) queue[rear++]=queue[i]->right;
        }
        (*returnSize)++;
       
    }
    *returnColumnSizes=(int*)malloc(sizeof(int)*(*returnSize));
    for(int i=0;i<*returnSize;i++) (*returnColumnSizes)[i]=columnSizes[i];
    return ans;
}

分析:

本题要求二叉树的层序遍历,可想到使用BFS算法,将二叉树每层放入数组中最后输出数组,可想到利用队列插入队尾删除队首的特性模拟队列记录每层的数再输出

总结:

本题考察二叉树的层序遍历,利用队列的特性可以解决

相关推荐
重生之小比特16 分钟前
【算法拾光】前缀和|连续的子数组和 + 和相同的二元子数组
算法·leetcode·哈希算法
hkNaruto26 分钟前
【AI】深度学习、强化学习、深度强化学习基础概念笔记
人工智能·笔记·深度学习
Pniubi27 分钟前
力扣 102二叉树的层序遍历(广度优先搜索)
leetcode·宽度优先
一去不复返的通信er27 分钟前
力扣15:盛最多水的容器
算法·leetcode
Navigator_Z30 分钟前
LeetCode //C - 1309. Decrypt String from Alphabet to Integer Mapping
c语言·算法·leetcode
潇湘秦33 分钟前
SQL Server 2016+ 整数类型元数据扩宽(秒级变更)完整说明
数据库·算法
文丑颜不良啊1 小时前
LeetCode1281~1300题目解析
java·leetcode
无心水1 小时前
15、云原生架构设计理论与实践 核心考点与学习笔记
笔记·学习·云原生·架构师·软考·系统架构设计师·软考系统架构设计师
动词ing1 小时前
【学习笔记】51单片机 独立按键控制LED显示二进制
笔记·学习·51单片机
叼烟扛炮2 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战
linux·运维·网络·笔记·学习·tcp/ip