Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Cs Summary Reflection
提交
49b7f38a
C
Cs Summary Reflection
项目概览
梦境迷离
/
Cs Summary Reflection
11 个月 前同步成功
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Cs Summary Reflection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
49b7f38a
编写于
6月 23, 2020
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
scala leetcode 1022
上级
7ed66c40
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
83 addition
and
0 deletion
+83
-0
scala-leetcode/README.md
scala-leetcode/README.md
+1
-0
scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_1022.scala
...e/src/main/scala/io/github/dreamylost/Leetcode_1022.scala
+72
-0
scala-leetcode/src/main/scala/io/github/dreamylost/TreeNodeData.scala
...de/src/main/scala/io/github/dreamylost/TreeNodeData.scala
+10
-0
未找到文件。
scala-leetcode/README.md
浏览文件 @
49b7f38a
...
...
@@ -43,6 +43,7 @@ Leetcode Scala 实现
*
[
单值二叉树
](
./src/main/scala/io/github/dreamylost/Leetcode_965.scala
)
*
[
对称的二叉树
](
./src/main/scala/io/github/dreamylost/Leetcode_JZ_28.scala
)
*
[
平衡二叉树
](
./src/main/scala/io/github/dreamylost/Leetcode_JZ_55_2.scala
)
*
[
从根到叶的二进制数之和
](
./src/main/scala/io/github/dreamylost/Leetcode_1022.scala
)
## 链表
...
...
scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_1022.scala
0 → 100644
浏览文件 @
49b7f38a
package
io.github.dreamylost
/**
* 1022. 从根到叶的二进制数之和
*
* 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。
*
* 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。以 10^9 + 7 为模,返回这些数字之和。
* @author 梦境迷离 dreamylost
* @since 2020-06-23
* @version v1.0
*/
object
Leetcode_1022
extends
App
{
val
ret
=
sumRootToLeaf
(
TreeNodeData
.
treeData3_6
())
val
ret2
=
sumRootToLeaf2
(
TreeNodeData
.
treeData3_6
())
println
(
ret
)
println
(
ret2
)
/**
* Scala不能更新形参,dfs时只能记录到当前节点上
*
* 540 ms,100.00%
* 51.5 MB,100.00%
*
* @param root
* @return
*/
def
sumRootToLeaf
(
root
:
TreeNode
)
:
Int
=
{
val
mod
=
1000000007
def
dfs
(
r
:
TreeNode
)
:
Int
=
{
if
(
r
==
null
)
return
0
val
temp
=
r
.
value
%
mod
if
(
r
.
left
==
null
&&
r
.
right
==
null
)
{
return
temp
}
if
(
r
.
left
!=
null
)
r
.
left
.
value
+=
temp
<<
1
if
(
r
.
right
!=
null
)
r
.
right
.
value
+=
temp
<<
1
(
dfs
(
r
.
left
)
+
dfs
(
r
.
right
))
%
mod
}
dfs
(
root
)
}
/**
* 硬解,计算路径的所有和
* 604 ms,25.00%
* 51.7 MB,100.00%
*
* @param root
* @return
*/
def
sumRootToLeaf2
(
root
:
TreeNode
)
:
Int
=
{
val
mod
=
1000000007
var
result
=
Seq
[
String
]()
//s必须传值
def
helper
(
r
:
TreeNode
,
path
:
String
)
:
Unit
=
{
if
(
r
==
null
)
return
if
(
r
.
left
==
null
&&
r
.
right
==
null
)
{
result
=
result
++
Seq
(
path
+
r
.
value
+
""
)
return
}
if
(
r
.
left
!=
null
)
helper
(
r
.
left
,
path
+
r
.
value
+
""
)
if
(
r
.
right
!=
null
)
helper
(
r
.
right
,
path
+
r
.
value
+
""
)
}
helper
(
root
,
new
String
)
result
.
map
(
r
=>
java
.
lang
.
Long
.
parseLong
(
r
,
2
)
%
mod
).
sum
.
asInstanceOf
[
Int
]
}
}
scala-leetcode/src/main/scala/io/github/dreamylost/TreeNodeData.scala
浏览文件 @
49b7f38a
...
...
@@ -68,6 +68,16 @@ object TreeNodeData {
root
}
//10 11
def
treeData3_6
()
:
TreeNode
=
{
val
root
=
new
TreeNode
(
1
)
val
r1
=
new
TreeNode
(
1
)
val
l1
=
new
TreeNode
(
0
)
root
.
right
=
r1
root
.
left
=
l1
root
}
def
treeData5_1
()
:
TreeNode
=
{
val
n1
=
new
TreeNode
(
1
)
val
n2
=
new
TreeNode
(
2
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录