Untitled
unknown
plain_text
a year ago
1.6 kB
6
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
}
}
Editor is loading...
Leave a Comment