栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode题库1022. 从根到叶的二进制数之和(dfs c 实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode题库1022. 从根到叶的二进制数之和(dfs c 实现

文章目录
  • 思路
    • func函数:
    • 二叉树分类
    • 补充
  • 代码

思路 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);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号