leetcode刷题日记——二叉树的层次遍历

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • BFS,利用队列特性完成对树的层次遍历
  • 运行如下
    在这里插入图片描述
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {
    if (!root) {
        *returnSize = 0;
        return NULL;
    }
    struct TreeNode* queue[2000];
    int** res = (int**)malloc(2000*sizeof(int*));
    *returnColumnSizes = (int*)malloc(2000*sizeof(int));
    int front = 0, rear = 0;
    *returnSize = 0;
    queue[rear++] = root;
    while (front < rear) {
        int sum = rear - front;
        res[*returnSize] = (int*)malloc(sum*sizeof(int));
        (*returnColumnSizes)[*returnSize] = sum;
        for (int i = 0; i < sum; i++) {
            struct TreeNode* node = queue[front++];
            res[*returnSize][i] = node->val;
            if (node->left) {
                queue[rear++] = node->left;
            }
            if (node->right) {
                queue[rear++] = node->right;
            }
        }
        (*returnSize)++;
    }
    return res;
}

[ 官方题解 ]:

  • 广度优先遍历:基本同上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值