首页 > 其他分享 >【C语言入门】第十五天

【C语言入门】第十五天

时间:2023-10-15 12:03:31浏览次数:37  
标签:right TreeNode struct int 第十五天 C语言 left root 入门

【例题1】938. 二叉搜索树的范围和 - 力扣(LeetCode)

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

int rangeSumBST(struct TreeNode* root, int low, int high){
    if(!root) return 0;
    if(root->val >= low && root->val <= high) 
        return rangeSumBST(root->left,low,high) + rangeSumBST(root->right,low,high) + root->val; 
    else 
        return rangeSumBST(root->left,low,high) + rangeSumBST(root->right,low,high);
}

【例题2】LCR 175. 计算二叉树的深度 - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int calculateDepth(struct TreeNode* root) {
    if(!root) return 0;
    int count1 = calculateDepth(root->left);
    int count2 = calculateDepth(root->right);
    return 1+ (count1 > count2?count1:count2);
}

【例题3】104. 二叉树的最大深度 - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root){
    if(!root) return 0;
    int count1 = maxDepth(root->left);
    int count2 = maxDepth(root->right);
    return 1+ (count1 > count2?count1:count2);
}

【例题4】226. 翻转二叉树 - 力扣(LeetCode)

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

struct TreeNode* invertTree(struct TreeNode* root){
   if(!root) return root;
    struct TreeNode* temp = root->left;
    root->left = root->right;
    root->right = temp;
    invertTree(root->left);
    invertTree(root->right);
    return root;
}

【例题5】797. 所有可能的路径 - 力扣(LeetCode)

int** p;
int temp[16];
int len;
//深度优先搜索
void dfs(int cur ,int dest,int** graph, int* graphColSize, int* returnSize, int** returnColumnSizes){
    if(cur == dest){
        int* change = (int*)malloc(sizeof(int)*len);  
        memcpy(change,temp,sizeof(int)*len);
        p[*returnSize] = change;
        (*returnColumnSizes)[(*returnSize)++] = len;
        return;
    }
    for(int i=0;i<graphColSize[cur];i++){
        int xx = graph[cur][i];
        temp[len++] = xx;
        dfs(xx,dest,graph,graphColSize,returnSize,returnColumnSizes);
        len--;
    }
}
int** allPathsSourceTarget(int** graph, int graphSize, int* graphColSize, int* returnSize, int** returnColumnSizes){
    //规定初始状态
    len = 0;
    temp[len++] = 0;
    p = (int**)malloc(sizeof(int*)*7000);
    *returnSize = 0;
    *returnColumnSizes = (int*)malloc(sizeof(int)*7000);
    //实现函数 - 深度优先搜索
    dfs(0, graphSize-1,graph,graphColSize,returnSize,returnColumnSizes);
    return p;
}

标签:right,TreeNode,struct,int,第十五天,C语言,left,root,入门
From: https://blog.51cto.com/u_16188762/7870262

相关文章

  • 1+X证书--传感器应用开发初级-C语言点亮LED灯
    #include<CC2530.h>//引入头文件CC2530.h。#defineled1P1_0//宏定义led1为端口P1_0。#defineled2P1_1//宏定义led2为端口P1_1。voidmain(void)//在main函数中进行程序的运行。{P1DIR=(0x01<<0)|(0x01<<1);//定义输出端口。led1=1;//点亮led1灯:1是亮,0是灭。led......
  • 物联网应用与维护搭建入门-准备工作
    1.设置SQLserver配置管理器。 先点击Windows键,找到M的文件,打开列表,找到SQLserver配置管理器。双击打开。进来后我们点击SQLserver网络配置,点击MSSQLSERVER的协议,找到TCP/IP,双击打开。(下面的VIA这个时候要注意看有没有开启,开启了的话我们这个TCP/IP是打不开的)启用......
  • C语言 通过union共存体释放常量指针指向的堆空间
    union共存体中所有成员占用相同的内存空间。因为free函数参数是void*,常量指针是constvoid*,所以free函数释放常量指针时会因类型不同而失败。#include<stdio.h>#include<malloc.h>#include<string.h>typedefunion_const_ptr{constvoid*cp;void*vp;}co......
  • C语言 strdup函数把字符串复制到新空间
    头文件是string.h。根据传入的字符串参数,malloc分配空间并复制,返回首地址,该地址通过free来释放。#include<stdio.h>#include<malloc.h>#include<string.h>intmain(){chara[20]="123";char*b=strdup(a);printf("%s\n",b);free(b);......
  • Kafka 入门教程
     Kafka是分布式发布-订阅消息系统,它最初由LinkedIn公司开发,使用Scala语言编写,之后成为Apache项目的一部分。在Kafka集群中,没有“中心主节点”的概念,集群中所有的服务器都是对等的,因此,可以在不做任何配置的更改的情况下实现服务器的的添加与删除,同样的消息的生产者和消费者......
  • C语言 likely和unlikely
    likely和unlikely作用在知道哪个发生概率更高的情况下,有if时使用likely和unlikely让代码运行更快。likely和unlikely是两个宏,当有if-else分支时告诉编译器,哪个条件更加有可能发生。likely代表if分支大概率会发生,unlikely代表if分支大概率不会发生。#definelikely(x)__builtin_......
  • 轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
    引言我们将继续深入研究组件启动专题。在之前的文章中,我们已经详细介绍了Redis的各种配置使用方法,为读者提供了全面的指导。然而,今天我们将转向另一个备受关注的数据库——MongoDB。MongoDB是一种流行的NoSQL数据库,具有强大的灵活性和可扩展性。在这篇文章中,我们将探索MongoDB的......
  • Python入门系列16-os模块
    一、os库介绍os库提供了操作系统功能接口函数,可以操作系统相关变量、文件和目录相关操作、路径相关操作。二、系统变量相关操作1、os.name:返回操作系统类型importosprint(os.name)输出:nt2、os.environ返回系统的环境变量importosprint(os.environ)3、os.sep:返回系统路径......
  • Python入门系列16-os模块
    一、os库介绍os库提供了操作系统功能接口函数,可以操作系统相关变量、文件和目录相关操作、路径相关操作。二、系统变量相关操作1、os.name:返回操作系统类型importosprint(os.name)输出:nt2、os.environ返回系统的环境变量importosprint(os.environ)3、os.sep:返回系统路径......
  • docker入门加实战—Docker镜像和Dockerfile语法
    docker入门加实战—Docker镜像和Dockerfile语法镜像镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。镜像结构我们要从0部署一个Java应用,大概流程是这样:准备Linux运行环境(java项目并不需要完整的操作......