尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
元宝    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

相关推荐

V0 更新实测:AI 全栈 Web 开发工具配 TaoToken 的 config.toml 骨架与验证

V0 更新实测:AI 全栈 Web 开发工具配 TaoToken 的 config.toml 骨架与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/29 10:54:50
飞书接入多个 OpenClaw agent:TaoToken 统一 Key 配置与验证

飞书接入多个 OpenClaw agent:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/29 10:54:50
在 Cursor 中启用 Karpathy 编码指南:.mdc 项目规则的设计、自动生效与跨工具复用

在 Cursor 中启用 Karpathy 编码指南:.mdc 项目规则的设计、自动生效与跨工具复用

AI 技能提示工程 【免费下载链接】andrej-karpathy-skills A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathys observations on LLM coding pitfalls. 项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-s…

📅 2026/9/29 10:54:50
MORE NEWS

更多资讯

📰

Xberg Elixir 绑定实战:用 extract_async 与 ExtractInput 实现 PDF 文本提取

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with …

📰

老电脑指南:可以装Win7系统CPU盘点

ㅤㅤ尽管Windows 7系统官方已停止支持多年,但鉴于目前还有很多工控软件对高版本系统的兼容性、以及特定办公需求和用户的操作习惯,Win7系统直至目前依然具有不可替代的使用价值。然而,随着硬件架构的快速迭代,新款处理器与Windows…

📰

Adobe Dreamweaver 完整安装步骤_保姆级

纯自用分享,勿作他用 安装资源 迅雷资源:迅雷资源链接 安装步骤 2.1鼠标右键解压到“Dreamweaver 2021” 2.2双击打开【Setup】文件夹 2.3 找到并选中Set-up,鼠标右键点击“以管理员身份运行” 2.4 选择软件安装路径,点击“继…

📰

Ultimate Vocal Remover 快速指南:三步完成 AI 人声伴奏分离

Ultimate Vocal Remover 快速指南:三步完成 AI 人声伴奏分离 【免费下载链接】ultimatevocalremovergui GUI for a Vocal Remover that uses Deep Neural Networks. 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui Ultimate Vo…

📰

TypeScript 函数完全指南:类型、参数、this 与重载实战

文档教程 【免费下载链接】TypeScript TypeScript 使用手册(中文版)翻译。http://www.typescriptlang.org 项目地址: https://gitcode.com/gh_mirrors/typ/TypeScript 点击查看 免费下载 本篇指南以 TypeScript 官方手册(中文版&…

📰

init add_pages

add_pages 是 Linux 内存热插拔(Memory Hotplug)机制中的核心函数,负责向系统动态添加一段物理内存区域。它位于 mm/memory_hotplug.c,是 __add_pages 的封装,额外处理了 max_pfn 更新和地址范围校验。核心作用&#x…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬