本文共 3483 字,大约阅读时间需要 11 分钟。
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
public static int sumNumbers(TreeNode root) { if (null == root) return 0; int sum = 0; List测试结果,返回50,正确结果应该是5000;list = sumNumbersUTL(root); for (Integer tmp : list) { sum += tmp; System.out.println(tmp); } return sum; } public static List sumNumbersUTL(TreeNode root) { if (null == root) return null; List list_left = sumNumbersUTL(root.left); List list_right = sumNumbersUTL(root.right); List list_add = new ArrayList (); if (null != list_left) { List list_left_tmp = new ArrayList<>(); for (Integer tmp : list_left) { String s = tmp.toString(); s = root.val + s; list_left_tmp.add(Integer.parseInt(s)); } list_add.addAll(list_left_tmp); /* * for (Integer tmp : list_left) { String s = tmp.toString(); s = * root.val + s; tmp = Integer.parseInt(s); } * list_add.addAll(list_left); */ } if (null != list_right) { List list_right_tmp = new ArrayList<>(); for (Integer tmp : list_right) { String s = tmp.toString(); s = root.val + s; list_right_tmp.add(Integer.parseInt(s)); } list_add.addAll(list_right_tmp); /* * for (Integer tmp : list_right) { String s = tmp.toString(); s = * root.val + s; tmp = Integer.parseInt(s); } * list_add.addAll(list_right); */ } if (null == list_left && null == list_right) { list_add.add(root.val); } return list_add; } public static void main(String[] arqs) { TreeNode root = new TreeNode(5); root.left = new TreeNode(0); root.left.left = new TreeNode(0); root.left.left.left = new TreeNode(0); System.out.println(sumNumbers(root)); }
分析;
s = root.val + s;
list_left_tmp.add(Integer.parseInt(s));这里调用
Integer.parseInt(s)会将000自动变成0
Java代码;
public static int sumNumbers(TreeNode root) { if (null == root) return 0; int sum = 0; Listlist = sumNumbersUTL(root); for (String tmp : list) { sum += Integer.parseInt(tmp); System.out.println(tmp); } return sum; } public static List sumNumbersUTL(TreeNode root) { if (null == root) return null; List list_left = sumNumbersUTL(root.left); List list_right = sumNumbersUTL(root.right); List list_add = new ArrayList (); if (null != list_left) { List list_left_tmp = new ArrayList<>(); for (String tmp : list_left) { list_left_tmp.add(root.val + tmp); } list_add.addAll(list_left_tmp); } if (null != list_right) { List list_right_tmp = new ArrayList<>(); for (String tmp : list_right) { list_right_tmp.add(root.val + tmp); } list_add.addAll(list_right_tmp); } if (null == list_left && null == list_right) { list_add.add(root.val + ""); } return list_add; } public static void main(String[] arqs) { TreeNode root = new TreeNode(5); /* * root.left = new TreeNode(3); root.right = new TreeNode(2); * root.left.left = new TreeNode(7); root.left.right = new TreeNode(8); * root.right.left = new TreeNode(6); root.left.right.left = new * TreeNode(1); */ root.left = new TreeNode(0); root.left.left = new TreeNode(0); root.left.left.left = new TreeNode(0); System.out.println(sumNumbers(root)); }
转载地址:http://iiuni.baihongyu.com/