LeetCode 107. 二叉树的层序遍历 II

在这里插入图片描述
思路:在102题的基础上修改代码,增加一个反转就可以了。

int** levelOrderBottom(struct TreeNode* root, int* returnSize, int** returnColumnSizes){
    *returnSize = 0;
    if(root==NULL)
        return NULL;
    int **res =malloc(sizeof(int*)*2000);
    *returnColumnSizes = malloc(sizeof(int)*2000);
    struct TreeNode *cur;
    struct TreeNode *queue[2000];
    int front = 0,rear=0;
    queue[rear++] = root;
    while(front!=rear){
        int colSize = 0;
        int last = rear;
        res[*returnSize] = malloc(sizeof(int)*(last-front));
        while(front<last){
            cur = queue[front++];
            res[*returnSize][colSize++] = cur->val;
            if(cur->left!=NULL)
                queue[rear++] = cur->left;
            if(cur->right!=NULL)
                queue[rear++] =cur->right;
        }
        (*returnColumnSizes)[*returnSize] = colSize;
        (*returnSize) ++;
    }
    for(int i=0; i*2<(*returnSize);i++){
        int *temp = res[i];
        res[i] = res[(*returnSize) - i - 1];
        res[(*returnSize) - i - 1] = temp ;

        int temp2 = (*returnColumnSizes)[i];
        (*returnColumnSizes)[i] = (*returnColumnSizes)[(*returnSize) - i - 1];
        (*returnColumnSizes)[(*returnSize) - i - 1] = temp2;
    }
    return res;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值