LeetCode 129 求根节点到叶节点数字之和
发布日期:2021-05-11 01:24:27 浏览次数:21 分类:精选文章

本文共 901 字,大约阅读时间需要 3 分钟。

分析递归:利用树的遍历框架锻炼递归思维

在二叉树结构中,我们可以通过递归的方式来解决各种问题。以下是关于树节点数值和的问题分析:

问题描述:树的结构是由多个节点组成的,每个节点有一个值。我们需要从树的根节点开始,沿着父节点的路径,将这些数字相加,得到总和。

解决思路:使用递归遍历树的方法。具体来说,我们可以设计一个辅助函数traverse,这个函数会接收当前节点的值和当前累加的总和。每次递归调用时,我们会将当前节点的值加到总和中,并将新的累加值传递给子节点。

代码解释:以下是实现这个思路的代码示例。traverse函数会根据当前节点是否为空来决定是否继续递归。如果是空节点,则返回。否则,我们会将当前节点的值加到累加器中,并依次递归左子节点和右子节点。

伪代码示例:

class Solution {
int sumNumbers(TreeNode* root) {
int sum = 0;
traverse(root, 0, sum);
return sum;
}
void traverse(TreeNode* root, int number, int& sum) {
if (root == nullptr) return;
number = number * 10 + root->val;
traverse(root->left, number, sum);
if (root->left == nullptr && root->right == nullptr) {
sum += number;
}
traverse(root->right, number, sum);
}
}

以上代码实现了树的遍历,通过递归的方式累加每个节点的值。每次递归时,我们会将当前节点的值加到number中,然后传递给子节点。如果某个节点同时没有左子节点和右子节点,我们就将当前累加的值加到总和中。

上一篇:LeetCode 173 二叉搜索树迭代器
下一篇:Redis——复制

发表评论

最新留言

很好
[***.229.124.182]2025年05月06日 02时18分33秒