From 330177d3fd97337b415a472c20e5d9e649282ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=A2=83=E8=BF=B7=E7=A6=BB?= Date: Thu, 16 Jul 2020 21:44:00 +0800 Subject: [PATCH] add scala #129 --- scala-leetcode/README.md | 1 + .../io/github/dreamylost/Leetcode_129.scala | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_129.scala diff --git a/scala-leetcode/README.md b/scala-leetcode/README.md index 8fb43490..175dc7dd 100644 --- a/scala-leetcode/README.md +++ b/scala-leetcode/README.md @@ -65,6 +65,7 @@ Leetcode Scala 实现 * [填充每个节点的下一个右侧节点指针](./src/main/scala/io/github/dreamylost/Leetcode_116.scala) * [填充每个节点的下一个右侧节点指针 II](./src/main/scala/io/github/dreamylost/Leetcode_117.scala) * [分裂二叉树的最大乘积](./src/main/scala/io/github/dreamylost/Leetcode_1339.scala) +* [求根到叶子节点数字之和](./src/main/scala/io/github/dreamylost/Leetcode_129.scala) ## 链表 diff --git a/scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_129.scala b/scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_129.scala new file mode 100644 index 00000000..664ad12a --- /dev/null +++ b/scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_129.scala @@ -0,0 +1,48 @@ +/* Licensed under Apache-2.0 @梦境迷离 */ +package io.github.dreamylost + +/** + * 129. 求根到叶子节点数字之和 + * + * 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 + * + * 例如,从根到叶子节点路径 1->2->3 代表数字 123。 + * + * 计算从根到叶子节点生成的所有数字之和。 + * + * 说明: 叶子节点是指没有子节点的节点。 + * + * @author 梦境迷离 dreamylost + * @since 2020-07-16 + * @version v1.0 + */ +object Leetcode_129 extends App { + + val ret = sumNumbers(TreeNodeData.treeData5_1()) + println(ret) + + /** + * 620 ms,100.00% + * 51.2 MB,100.00% + * 最优解是:利用进制 + * + * @see Leetcode_1022 + * @param root + * @return + */ + def sumNumbers(root: TreeNode): Int = { + var ret = Seq.empty[String] + + def helper(r: TreeNode, path: String): Unit = { + if (r == null) return + if (r.left == null && r.right == null) { + ret = ret ++ Seq(path + r.value.toString) + } + helper(r.left, path + r.value.toString) + helper(r.right, path + r.value.toString) + } + + helper(root, new String) + ret.map(p => Integer.parseInt(p)).sum + } +} -- GitLab