Leecode 129. 求根节点到叶节点数字之和 DFS

news/2024/7/20 20:55:39 标签: 深度优先, leetcode, 算法, c++

原题链接:Leecode 129. 求根节点到叶节点数字之和
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码一

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<int> path;
    int res=0;
    void dfs(TreeNode* root)
    {
        if(root->left==nullptr && root->right==nullptr)
        {
            int tmp=0;
            for(int i=0;i<path.size();i++)
            {
                tmp=tmp*10+path[i];
            }
            res+=tmp;
            return ;
        }
        if(root->left)
        {
            path.push_back(root->left->val);
            dfs(root->left);
            path.pop_back();
        }
        if(root->right)
        {
            path.push_back(root->right->val);
            dfs(root->right);
            path.pop_back();
        }

    }
    int sumNumbers(TreeNode* root) {
        path.push_back(root->val);
        dfs(root);
        return res;
    }
};

代码二:

class Solution {
public:
    int dfs(TreeNode* root,int pre)
    {
        if(root==nullptr) return 0;
        int sum=pre*10+root->val;
        if(root->left==nullptr && root->right==nullptr)  return sum;
        else return dfs(root->left,sum)+dfs(root->right,sum);
    }
    int sumNumbers(TreeNode* root) {
        return dfs(root,0);
    }
};

http://www.niftyadmin.cn/n/1264866.html

相关文章

(Leetcode) 计算右侧小于当前元素的个数 - Python实现

题目&#xff1a;计算右侧小于当前元素的个数 给定一个整数数组 nums&#xff0c;按要求返回一个新数组 counts。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例: 输入: [5,2,6,1]&#xff0c;输出: [2,1,1,0] 解释: 5 的右…

Leecode 236. 二叉树的最近公共祖先 DFS/递归

原题链接&#xff1a;Leecode 236. 二叉树的最近公共祖先 我的DFS。。。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class…

(Leetcode) 打家劫舍 - Python实现

题目&#xff1a;打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一…

Leecode 235. 二叉搜索树的最近公共祖先 递归

原题链接&#xff1a;Leecode 235. 二叉搜索树的最近公共祖先 代码一&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* }…

(Leetcode) 至少有K个重复字符的最长子串- Python实现

题目&#xff1a;至少有K个重复字符的最长子串 找到给定字符串&#xff08;由小写字符组成&#xff09;中的最长子串 T &#xff0c; 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 : 输入:s "aaabb", k 3&#xff0c;输出:3 最长子串为 "aaa…

Leecode 105. 从前序与中序遍历序列构造二叉树 递归

原题链接&#xff1a;Leecode 105. 从前序与中序遍历序列构造二叉树 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(…

交叉验证(Cross-Validation)

今天我们就来详细了解一下 "交叉验证" 这个概念&#xff01; 首先来看一下&#xff0c;什么是交叉验证&#xff1f; 交叉验证&#xff0c;是我们在学习机器学习建模中经常能遇到的一种方法。顾名思义&#xff0c;它就是通过 "交叉" &#xff08;将原始数…

(Leetcode) 二叉树中的最大路径和 - Python实现

题目&#xff1a;二叉树中的最大路径和 给定一个非空二叉树&#xff0c;返回其最大路径和。 本题中&#xff0c;路径被定义为一条从树中任意节点出发&#xff0c;达到任意节点的序列。该路径至少包含一个节点&#xff0c;且不一定经过根节点。 ------------------------------…