Sum Root to Leaf Numbers
Given a binary tree containing digits from
0-9
only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3
which represents the number 123
.
Find the total sum of all root-to-leaf numbers.
For example,
1
/ \
2 3
The root-to-leaf path 1->2
represents the number 12
.
The root-to-leaf path 1->3
represents the number 13
.
Return the sum = 12 + 13 = 25
.
My initial solution used an arrayList to hold all root to leaf numbers, and then finally add them all.
public class Solution { ArrayList<Integer> result = new ArrayList<Integer>(); public int sumNumbers(TreeNode root) { if (root == null) return 0; sumNumbersHelper(root, 0); int total = 0; for (int a : result){ total += a; } return total; } public void sumNumbersHelper(TreeNode root, int sum){ if (root == null) return; sum = sum * 10 + root.val; if (root.left == null && root.right == null){ result.add(sum); return; } else { if (root.left != null) sumNumbersHelper(root.left, sum); if (root.right != null) sumNumbersHelper(root.right, sum); } } }
But later I found this much cleaner solution, do not need an arrayList. Instead, just sum them directly.
public class Solution { int result = 0; public int sumNumbers(TreeNode root) { if (root == null) return 0; sumNumbersHelper(root, 0); return result; } public void sumNumbersHelper(TreeNode root, int sum){ if (root == null) return; sum = sum * 10 + root.val; if (root.left == null && root.right == null){ result += sum; return; } else { if (root.left != null) sumNumbersHelper(root.left, sum); if (root.right != null) sumNumbersHelper(root.right, sum); } } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步