二叉树层序遍历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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python处理xps文件_xps/pdf/png/json转换

    python处理xps文件_xps/pdf/png/json转换问题11.如何移植最新版本的pdf.js到pdf2json库中来2.如何实现坐标换算参考源码x/px=PDFUnit.toPixelX(x+0.25)y/px=PDFUnit.toPixelY(x+0.75)w/px=PDFUnit.toFixedFloat(maxWidth),Theunitforallwidth,height,length,etc,isin”…

    2022年5月4日
    51
  • c++ map和set_STLset和map的区别

    c++ map和set_STLset和map的区别C++map和set的介绍及使用零、前言一、关联式容器二、键值对三、C++中的set1、set的介绍2、set的使用四、C++中的multiset五、C++中的map1、map的介绍2、map的使用六、C++中的multimap零、前言本章主要讲解C++中的关联式容器map和set的介绍及其使用一、关联式容器容器分类:序列式容器:初阶阶段中学习过STL中的部分容器,如:vector、list、deque等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身

    2025年9月16日
    7
  • Domain 2008R2域管理员没有权限

    Domain 2008R2域管理员没有权限

    2021年8月30日
    71
  • Java教学视频下载(全集)

    Java教学视频下载(全集)1:四百本Java电子书下载链接:http://www.verycd.com/topics/2784992/2:蓝点在线Java视频教程http://you.video.sina.com.cn/a/1905723-1393828897/1/2.html3:J2EEWeb程序开发定向班V1.0Java就业班V2.0(完整版)http://www.verycd.com/topics/…

    2022年5月15日
    41
  • linux常用命令杀死进程_kill杀死进程命令

    linux常用命令杀死进程_kill杀死进程命令在做项目的时候经常会出现程序死机、锁死、无响应等情况,这时候就需要找到程序相应的进程将其杀掉即可。步骤如下:1.定位进程top命令:可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。输入top后可以看到如下的界面,实时显示进程情况。ps命令:processstatus的简称,用于报告当…

    2022年4月19日
    237
  • 服务器CPU型号后缀的区别,CPU后缀英文简单科普知识,若能区别字母的含义,选购好CPU不求人…

    服务器CPU型号后缀的区别,CPU后缀英文简单科普知识,若能区别字母的含义,选购好CPU不求人…在组装电脑选购CPU时,很多人都会发现有不少的CPU名称后面,都会带有1个或2个英文字母。其实这些英文字母,都代表着每个CPU型号的不同特点。intel系列CPU最近又有网友咨询,CPU后面的英文字母有何意义,应该怎么样去区别字母的含义?小编今天就针对CPU后缀英文简单科普知识,若能区别字母的含义,选购好CPU不求人。011、intel系列CPU后缀英文的不同含义在intel系列CPU中,后缀带英…

    2022年5月29日
    51

发表回复

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

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