题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pRoot TreeNode类 
 * @return int整型二维数组
 * @return int* returnSize 返回数组行数
 * @return int** returnColumnSizes 返回数组列数
 */

#include <stdlib.h>
int** Print(struct TreeNode* root, int* returnSize, int** returnColumnSizes ) {
    (*returnSize) = 0;
    if(root == NULL)    return NULL;
    int **level = (int **)malloc(sizeof(int *)*1000);
    *returnColumnSizes =  (int*)malloc(sizeof(int) * 1000);
    int k = 0;
    int head = 750, nhead;
    int tail = 750, ntail;
    struct TreeNode * queue[1500];
    queue[tail++] = root;
    while(head != tail){
        ntail = tail;
        nhead = head;
        k = 0;
        level[*returnSize] = (int *)malloc(sizeof(int)*(ntail - head));
        while((head < ntail)&&(tail > nhead)){
            if((*returnSize)%2 == 0){
                struct TreeNode *p = queue[head];
                level[*returnSize][k++] = p->val; 
                if(p->left)
                    queue[tail++] = p->left;
                if(p->right)
                    queue[tail++] = p->right;
                head++;
            }
            else if((*returnSize)%2 != 0){
                struct TreeNode *p = queue[--tail];
                level[*returnSize][k++] = p->val;
                if(p->right)
                    queue[--head] = p->right;
                if(p->left)
                    queue[--head] = p->left;
            }
        }
        (*returnColumnSizes)[(*returnSize)++] = k;
    }
    return level;
}

全部评论

相关推荐

12-01 12:34
已编辑
广东工业大学 Java
如题,fw🐭🐭,加上准备的太晚,大三上已找不到日常实习,导致连锁反应,下学期的暑期实习找不到好的实习,导致秋招找不到中大厂,现在是中小厂Java还有考公的选择,由于有些中小厂工作强度比肩大厂,钱还少,感觉不如考公如果🐮u们是我现在这种情况,会怎么选?
负债的混子:关注你一段时间了,突然发现你头像名字都改了,想必是这段时间压力很大。关于就业还是考公的选择,就像很多牛友说的:不要美化自己没走过的路。你现在想往互联网发展,发现这条路很难走,然后想往考公发展,但是你没走过考公这条路,所以你不知道这条路的压力如何。你今年大三了,还有时间给你做选择,我希望你能够尽快的决定自己的方向,然后一条路走到黑,而不是在这里徘徊,每个人的道路是不一样的,你无法复刻别人的路,你能做的就是尽力的完善自己。 最后,我想说的是,加油,陌生人!
点赞 评论 收藏
分享
沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务