- 思路
- func函数:
- 二叉树分类
- 补充
- 代码
接收参数:节点,一个整数Sum
返回值:节点构成二进制数之和 + 2*Sum
1、
root = NULL
返回结果为0
2、
root->left = NULL, root->right = NULL
返回结果为2*Sum + root->val
3、
root->left != NULL, root->right = NULL
返回结果为func(root->left, temp + root->val) + func(root->right, temp + root->val)
4、
root->left = NULL, root->right != NULL
返回结果为func(root->left, temp + root->val) + func(root->right, temp + root->val)
5、
root->left != NULL, root->right != NULL
返回结果为func(root->left, temp + root->val) + func(root->right, temp + root->val)
1、对于func函数的参数Sum,直接传递当前从根节点到当前节点所累加的数
若还有下一个数,则将Sum翻倍,再加上当前val传递给下一个节点
2、为什么root=NULL时,返回0
因为root=NULL表明当前节点为空,从根节点到当前节点的路径是不存在的,所以直接返回0即可
int func(struct TreeNode* root, int Sum){
int ret;
int temp = 2 * Sum;
if(root==NULL){
ret = 0;
}
else{
if(root->left==NULL && root->right==NULL){
ret = temp + root->val;
}
else{
int sum_l = func(root->left, temp + root->val);
int sum_r = func(root->right, temp + root->val);
ret = sum_l + sum_r;
}
}
return ret;
}
int sumRootToLeaf(struct TreeNode* root){
return func(root, 0);
}



