Untitled
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