二叉树层序遍历C语言版

二叉树层序遍历C语言版二叉树层序遍历C语言版leetcode102/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*//***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearray

大家好,又见面了,我是你们的朋友全栈君。

二叉树层序遍历C语言版

leetcode 102

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
 
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){
    * returnSize = 0;
    * returnColumnSizes = malloc(sizeof(int) * 2010);
    if(root == NULL){
        return 0;
    }
    int i = 0;
    struct TreeNode* node;
    int front=0, top = 0;
    struct TreeNode** q = malloc(sizeof(struct TreeNode*) * 2010);
    int** ret = malloc(sizeof(int*) * 2010);
    q[top++] = root; //q[0] = root
    // 队列为空 top==front
    while(top - front > 0){

        int q_size = top - front;
        (* returnColumnSizes)[i] = q_size;
        ret[i] = malloc(sizeof(int) * q_size);
        for(int j =0; j < q_size;j++){
            node = q[front++]; //出队
            ret[i][j] = node->val;   
            if(node->left != NULL)  q[top++]= node->left;     // push
            if(node->right != NULL)  q[top++]= node->right;
        }
        i++;
    }
    * returnSize = i;
    return ret;

}

挺有意思的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143573.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 看完了aspnetmvc nerdinner项目

    看完了aspnetmvc nerdinner项目这几天一直在看aspnetmvc-nerdinner这本书中的Nerdinner代码编写的全过程。其实觉得用最原始的办法:动手敲代码带给我们的好处比单纯的看然后Copy代码再运行要好的多,最起码加深了我们的记忆。前段时间看了ASP.NET网站上关于ASP.NETMVC编程的培训文章,觉得MVC挺强大的,然后就试着自己做了一个小项目,可是在做的过程中,很多东西确实见多人家怎么做,也知道大概…

    2022年9月29日
    0
  • 手把手教你制作机房三维场景(3D效果图)

    手把手教你制作机房三维场景(3D效果图)前言:随着信息技术的不断发展,大量数据中心机房的建设、监控软件已经成为机房管理者的重要武器,特别是机房效果图这一块,从简易的CAD到现在的3D效果图,从静态到三维动态的改进,机房监控软件基本上可以说是从无到有的一个过程,下面本文跟大家分享机房高大上的数据中心三维可视化管理软件的三维场景制作过程(俗称:3D效果图的制作过程)。以前的机房效果图现在的机房3D效果图数据中心可三维可视化管理软件,通过对现

    2022年6月2日
    147
  • Java核心技术(基础知识一)

    Java核心技术(基础知识一)Java程序设计概述1.1Java“白皮书”的关键术语简单性我们希望构建一个无须深奥的专业训练就可以进行编程的系统,并且要符合当今的标准惯例。因此,尽管我们发现C++不太适用,但在设计Java的时候韩式尽可能地接近C++,以便系统更易于理解。Java剔除了C++中许多很少使用、难以理解、容易混淆地特性。在我们看来,这些特性带来地麻烦远远多于它们地好处。的确,Java地语法是C++的一个“纯净”版本。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等。然而,设计者并

    2022年7月9日
    19
  • 电视猫的节目单_湖南卫视2020年电视剧节目单

    电视猫的节目单_湖南卫视2020年电视剧节目单SubMain()DimstrTextAsStringDimobjHTTPAsObjectDimKey_qAsStringDimKey_aAsStringDimK

    2022年8月3日
    4
  • ArrayList 扩容详解,扩容原理[通俗易懂]

    ArrayList 扩容详解,扩容原理[通俗易懂]ArrayList扩容详解,扩容原理ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。ArrayList不是线程安全的,只能用在单线程环境下。实现了Serializable接口,因此它支持序列化,能够通过序列化传输;实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问;实现了Cloneable接口,能被克隆。动态扩容一初始化…

    2022年6月12日
    35
  • iec101规约解析_CDT规约

    iec101规约解析_CDT规约对于点对点和多个点对点的通道结构,主站或子站复位后首先进行初始化,总召唤和时钟同步后系统转入正常,然后在循环召唤2级用户数据的序列中定期插入按照分组召唤方式和按顺序收集各组数据进行召唤。在子站回送的报文中如果ACD=1,则立即收集1级用户数据,1级用户数据收集完后,转向上述循环询问过程,此种循环召唤过程可以被中断,如被召唤电度、遥控等。平衡式传输除具有非平衡式传输的各种报文外,在特定情况下子站还可以作为启动站,主动向主站发送报文。即:“问答+循环”,问答式,同非平衡式,循环,即子站定时主动上送信息。….

    2025年6月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号