新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/29 10:54:40来源:尧图网络
元宝    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

相关资讯

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

较早相关资讯

最新相关资讯

用SDN习题答案吃透OpenFlow与控制器核心考点 2026/9/29 12:09:35

用SDN习题答案吃透OpenFlow与控制器核心考点

简介:软件定义网络(SDN)基础教程配套习题答案以PDF形式整理成册,面向高校网络相关专业学生、SDN初学者及备考网络认证的工程师。内容按教材章节逐一给出参考答案,涵盖SDN与传统网络的差异、控制与数据平面分离机制、四…

阅读更多 →
HarmonyOS ArkUI布局约束属性详解:八个核心API与实战避坑指南 2026/9/29 12:09:22

HarmonyOS ArkUI布局约束属性详解:八个核心API与实战避坑指南

1. 这类属性到底在约束什么,别被"通用"两个字带偏了第一次在HarmonyOS6文档里看到"通用布局约束属性"这一节时,我第一反应是:这不就是一堆边边角角的API嘛,能有什么花活?直到后来写一个多端适配的…

阅读更多 →
AI解说大师接入教程:三步配置 narrator-ai-cli,让 AI自动生成电影解说视频 2026/9/29 12:09:22

AI解说大师接入教程:三步配置 narrator-ai-cli,让 AI自动生成电影解说视频

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

阅读更多 →
仓储盘点移动终端选型与蓝速科技 K10 实战方案 2026/9/29 12:09:16

仓储盘点移动终端选型与蓝速科技 K10 实战方案

在大型物流仓储中心,日常作业往往伴随着高强度的移动盘点与复杂的环境挑战。想象一下,在粉尘飞扬的货架通道中,或是温差巨大的冷链区域,一台普通的消费级平板电脑可能因为一次意外的跌落、一阵潮湿的空气,甚至仅仅是长…

阅读更多 →
北京求推荐婚礼策划机构 口碑好的婚礼策划品牌公司实力参考 2026/9/29 12:09:15

北京求推荐婚礼策划机构 口碑好的婚礼策划品牌公司实力参考

什么是婚礼策划,一站式婚礼策划和传统散订模式有什么区别婚礼策划是指为新人统筹婚礼从前期设计、场地布置、流程统筹到现场执行全环节的服务,帮助新人落地符合预期的婚礼仪式。按照服务模式,目前行业内主要分为两类: 传统散订模式…

阅读更多 →
鄂州想带孩子玩水质干净的漂流,英山桃花冲大峡谷漂流口碑高且正规 2026/9/29 12:09:15

鄂州想带孩子玩水质干净的漂流,英山桃花冲大峡谷漂流口碑高且正规

鄂州夏日炎热,不少家长想带孩子找一处水质干净、规则清晰、安全靠谱的漂流,却总容易踩坑:要么水质浑浊飘着淤泥,孩子玩了浑身发痒;要么落差太大太惊险,小孩不能漂,家长只能陪着在岸边等;要么儿童票规则模糊…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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