Leetcode 129. Find the sum of numbers from the root node to the leaf node Java

Find the sum of the numbers from the root node to the leaf node

Question blog link

https://blog.csdn.net/qq_43349112/article/details/108542248

Topic link

https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/

description

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 09 之间的数字。
每条从根节点到叶节点的路径都代表一个数字:

例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。
计算从根节点到叶节点生成的 所有数字之和 。

叶节点 是指没有子节点的节点。


提示:

树中节点的数目在范围 [1, 1000]0 <= Node.val <= 9
树的深度不超过 10

Example

Example 1:

Insert picture description here

输入:root = [1,2,3]
输出:25
解释:
从根到叶子节点路径 1->2 代表数字 12
从根到叶子节点路径 1->3 代表数字 13
因此,数字总和 = 12 + 13 = 25

Example 2:

Insert picture description here

输入:root = [4,9,0,5,1]
输出:1026
解释:
从根到叶子节点路径 4->9->5 代表数字 495
从根到叶子节点路径 4->9->1 代表数字 491
从根到叶子节点路径 4->0 代表数字 40
因此,数字总和 = 495 + 491 + 40 = 1026

Initial code template

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    
    public int sumNumbers(TreeNode root) {
    
    
      
    }
}

Code

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    
    private int res = 0;
    public int sumNumbers(TreeNode root) {
    
    
        dfs(root, 0);
        return res;
    }

    private void dfs(TreeNode node, int cur) {
    
    
        cur = cur * 10 + node.val;
        if (node.left == null && node.right == null) {
    
    
            res += cur;
            return;
        }

        if (node.left != null) {
    
    
            dfs(node.left, cur);
        }

        if (node.right != null) {
    
    
            dfs(node.right, cur);
        }
    }
}

Guess you like

Origin blog.csdn.net/qq_43349112/article/details/115272411