新闻详情

新闻详情

首页 / 资讯中心 / 详情

元宝 LeetCode 129. 求根节点到叶节点数字之和 C语言实现

发布时间:2026/11/15 12:25:46来源:尧图网络
元宝    LeetCode 129. 求根节点到叶节点数字之和 C语言实现
这是 LeetCode 129 题 “求根节点到叶节点数字之和” 的 C语言 实现。解题思路深度优先搜索DFSC 语言中我们可以通过递归函数来实现 DFS传递累加值定义递归函数“dfs(struct TreeNode* node, int current_sum)”将当前路径组成的数字向下传递。计算当前节点值“new_sum current_sum * 10 node-val”。判断叶子节点若“node-left NULL node-right NULL”说明到了叶子节点直接返回“new_sum”。递归左右子树否则返回左子树和右子树的递归结果之和。LeetCode 风格核心代码#include stdlib.h// LeetCode 中 TreeNode 的定义// struct TreeNode {// int val;// struct TreeNode *left;// struct TreeNode *right;// };// 深度优先搜索辅助函数int dfs(struct TreeNode* node, int current_sum) {if (node NULL) {return 0;}// 计算从根到当前节点路径组成的数字 int new_sum current_sum * 10 node-val; // 如果是叶子节点返回该路径的数字 if (node-left NULL node-right NULL) { return new_sum; } // 递归左右子树并求和 return dfs(node-left, new_sum) dfs(node-right, new_sum);}// 主函数入口int sumNumbers(struct TreeNode* root) {return dfs(root, 0);}完整可运行示例含本地测试如果你想在本地如 GCC 编译器运行测试可以使用以下完整代码。代码中手动构建了示例二叉树并演示了如何调用“sumNumbers” 函数#include stdio.h#include stdlib.h// 二叉树节点定义struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;};// 创建新节点struct TreeNode* createNode(int val) {struct TreeNode* node (struct TreeNode*)malloc(sizeof(struct TreeNode));node-val val;node-left NULL;node-right NULL;return node;}// 深度优先搜索int dfs(struct TreeNode* node, int current_sum) {if (node NULL) return 0;int new_sum current_sum * 10 node-val; if (node-left NULL node-right NULL) { return new_sum; } return dfs(node-left, new_sum) dfs(node-right, new_sum);}// 主函数int sumNumbers(struct TreeNode* root) {return dfs(root, 0);}// 释放树的内存void freeTree(struct TreeNode* root) {if (root NULL) return;freeTree(root-left);freeTree(root-right);free(root);}int main() {// 示例 1: [1,2,3]// 1// /// 2 3struct TreeNode* root1 createNode(1);root1-left createNode(2);root1-right createNode(3);printf(“示例1结果: %d\n”, sumNumbers(root1)); // 输出: 25freeTree(root1);// 示例 2: [4,9,0,5,1] // 4 // / \ // 9 0 // / \ // 5 1 struct TreeNode* root2 createNode(4); root2-left createNode(9); root2-right createNode(0); root2-left-left createNode(5); root2-left-right createNode(1); printf(示例2结果: %d\n, sumNumbers(root2)); // 输出: 1026 freeTree(root2); return 0;}编译与运行gcc sum_numbers.c -o sum_numbers./sum_numbers复杂度分析时间复杂度O(n)其中 n 是二叉树的节点总数每个节点被访问一次。空间复杂度O(h)其中 h 是二叉树的高度。主要是递归调用栈占用的空间最坏情况树退化为链表下为 O(n)。 代码说明为什么不用全局变量 上面的实现使用了函数返回值来累加避免了使用全局变量线程安全且更符合函数式编程风格。指针操作C 语言中通过“-” 访问结构体成员判断子树是否存在只需检查指针是否为“NULL”。需要我为你提供迭代法使用栈模拟 DFS的 C 语言实现或者帮你对比 C 与 Python/Rust 在递归处理上的差异吗
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉