题目链接:
题目描述:
把从根节点到叶子结点组成的数加起来求和。
For example,
1
/ \
2 3
The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.
Return the sum = 12 + 13 = 25.
题目分析:
深搜的变形。利用递归先序遍历。当root->left==NULL && root->right==NULL。即表明root为叶子节点。
代码:
class Solution {
public:
int result=0;
void preOrderTraversal(TreeNode* root,int curNum){
if(root->left==NULL && root->right==NULL){
result+=curNum;
}
else{
curNum*=10;
if(root->left!=NULL){
preOrderTraversal(root->left,curNum+root->left->val);
}
if(root->right!=NULL){
preOrderTraversal(root->right,curNum+root->right->val);
}
}
}
int sumNumbers(TreeNode* root) {
if(root==NULL)
{
return result;
}
preOrderTraversal(root,root->val);
return result;
}
};

本文介绍了一种使用递归先序遍历的方法来解决树结构中从根节点到叶子节点组成的数值路径求和问题。通过深搜算法,逐层累加节点值,并在达到叶子节点时将路径值加入总和。
4606

被折叠的 条评论
为什么被折叠?



