Untitled

 avatar
unknown
plain_text
a month ago
1.6 kB
1
Indexable
class TreeNode {
    int val;
    TreeNode left, right;

    TreeNode(int value) {
        val = value;
        left = right = null;
    }
}

public class BinaryTree {
    public static int sumNumbers(TreeNode root) {
        return dfs(root, 0);
    }

    private static int dfs(TreeNode node, int currentNumber) {
        if (node == null) {
            return 0;
        }

        // Update the current number formed by the path
        currentNumber = currentNumber * 10 + node.val;

        // If it's a leaf node, return the current number
        if (node.left == null && node.right == null) {
            return currentNumber;
        }

        // Recurse on left and right subtrees
        int leftSum = dfs(node.left, currentNumber);
        int rightSum = dfs(node.right, currentNumber);

        // Return the sum of both subtrees
        return leftSum + rightSum;
    }

    public static void main(String[] args) {
        // Example 1
        TreeNode root1 = new TreeNode(1);
        root1.left = new TreeNode(2);
        root1.right = new TreeNode(3);

        System.out.println("Total Sum of Root-to-Leaf Numbers: " + sumNumbers(root1)); // Output: 25

        // Example 2
        TreeNode root2 = new TreeNode(4);
        root2.left = new TreeNode(9);
        root2.right = new TreeNode(0);
        root2.left.left = new TreeNode(5);
        root2.left.right = new TreeNode(1);

        System.out.println("Total Sum of Root-to-Leaf Numbers: " + sumNumbers(root2)); // Output: 1026
    }
}
Leave a Comment