题目链接:
题目描述:
把从根节点到叶子结点组成的数加起来求和。
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;
}
};