博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sum Root to Leaf Numbers
阅读量:4074 次
发布时间:2019-05-25

本文共 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

Java代码:

public static int sumNumbers(TreeNode root) {		if (null == root)			return 0;		int sum = 0;		List
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)); }
测试结果,返回50,正确结果应该是5000;

分析;

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;		List
list = 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/

你可能感兴趣的文章
Android开发中Button按钮绑定监听器的方式完全解析
查看>>
Android自定义View实现商品评价星星评分控件
查看>>
postgresql监控工具pgstatspack的安装及使用
查看>>
postgresql查看表的和索引的情况,判断是否膨胀
查看>>
postgresql中根据oid和filenode去找表的物理文件的位置
查看>>
postgresql减少wal日志生成量的方法
查看>>
swift中单例的创建及销毁
查看>>
获取App Store中App的ipa包
查看>>
iOS 关于pods-frameworks.sh:permission denied报错的解决
查看>>
设置RGBColor
查看>>
设置tabbaritem的title的颜色及按钮图片
查看>>
动态设置label的高度
查看>>
获取 一个文件 在沙盒Library/Caches/ 目录下的路径
查看>>
图片压缩
查看>>
检测缓存文件是否超时
查看>>
十进制字符串转十六进制字符串
查看>>
属性字符串(富文本)的使用
查看>>
cell上label的背景颜色在选中状态下改变的解决办法
查看>>
GPS定位
查看>>
地图、显示用户位置、大头针
查看>>