当前位置: 首页 > news >正文

C语言 | Leetcode C语言题解之第113题路径总和II

题目:

题解:

int** ret;
int retSize;
int* retColSize;int* path;
int pathSize;typedef struct {struct TreeNode* key;struct TreeNode* val;UT_hash_handle hh;
} hashTable;hashTable* parent;void insertHashTable(struct TreeNode* x, struct TreeNode* y) {hashTable* rec = malloc(sizeof(hashTable));rec->key = x;rec->val = y;HASH_ADD_PTR(parent, key, rec);
}struct TreeNode* queryHashTable(struct TreeNode* x) {hashTable* rec;HASH_FIND_PTR(parent, &x, rec);return rec->val;
}void getPath(struct TreeNode* node) {int* tmp = malloc(sizeof(int) * 2001);int tmpSize = 0;while (node != NULL) {tmp[tmpSize++] = node->val;node = queryHashTable(node);}for (int i = 0; i < tmpSize / 2; i++) {int t = tmp[i];tmp[i] = tmp[tmpSize - 1 - i], tmp[tmpSize - 1 - i] = t;}ret[retSize] = tmp;retColSize[retSize++] = tmpSize;
}int** pathSum(struct TreeNode* root, int targetSum, int* returnSize, int** returnColumnSizes) {ret = malloc(sizeof(int*) * 2001);retColSize = malloc(sizeof(int) * 2001);path = malloc(sizeof(int) * 2001);retSize = pathSize = 0;parent = NULL;insertHashTable(root, NULL);if (root == NULL) {*returnColumnSizes = retColSize;*returnSize = retSize;return ret;}struct TreeNode* que_node[10001];int que_sum[10001];int left = 0, right = 0;que_node[right] = root;que_sum[right++] = 0;while (left < right) {struct TreeNode* node = que_node[left];int rec = que_sum[left++] + node->val;if (node->left == NULL && node->right == NULL) {if (rec == targetSum) {getPath(node);}} else {if (node->left != NULL) {insertHashTable(node->left, node);que_node[right] = node->left;que_sum[right++] = rec;}if (node->right != NULL) {insertHashTable(node->right, node);que_node[right] = node->right;que_sum[right++] = rec;}}}*returnColumnSizes = retColSize;*returnSize = retSize;return ret;
}

相关文章:

  • Java线程池机制揭秘:一文掌握核心概念与实战技巧
  • 基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)
  • Day04:CSS 进阶
  • Ubuntu18.04 OpenSSH升级
  • IT行业的现状与未来发展趋势:从云计算到量子计算的技术变革
  • 猫头虎 解析:为什么AIGC在国内适合做TOB,在国外适合做TOC?
  • 【数据结构与算法 经典例题】相交链表
  • 【java程序设计期末复习】chapter7 内部类和异常类
  • C++STL---string知识汇总
  • Elasticsearch的复制功能
  • C#解析xml文件
  • K8s的kubectl的基本操作
  • C语言中的操作符
  • 二叉树——经典练习题
  • 【Linux-中断】
  • 4. 路由到控制器 - Laravel从零开始教程
  • angular2 简述
  • iOS编译提示和导航提示
  • SpriteKit 技巧之添加背景图片
  • 编写高质量JavaScript代码之并发
  • - 概述 - 《设计模式(极简c++版)》
  • 好的网址,关于.net 4.0 ,vs 2010
  • 计算机在识别图像时“看到”了什么?
  • 聚簇索引和非聚簇索引
  • 马上搞懂 GeoJSON
  • raise 与 raise ... from 的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # Redis 入门到精通(九)-- 主从复制(1)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 飞书APP集成平台-数字化落地
  • # 数仓建模:如何构建主题宽表模型?
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #stm32驱动外设模块总结w5500模块
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (八)Flink Join 连接
  • (二)WCF的Binding模型
  • (分布式缓存)Redis分片集群
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (五)activiti-modeler 编辑器初步优化
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)linux 命令大全
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (状压dp)uva 10817 Headmaster's Headache
  • .Net 6.0--通用帮助类--FileHelper
  • .NET C# 操作Neo4j图数据库
  • .NET C# 使用 iText 生成PDF
  • .net 中viewstate的原理和使用
  • .Net6 Api Swagger配置
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET面试题(二)
  • .net生成的类,跨工程调用显示注释
  • .NET学习全景图
  • .ui文件相关