Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Cs Summary Reflection
提交
375c4f99
C
Cs Summary Reflection
项目概览
梦境迷离
/
Cs Summary Reflection
10 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
375c4f99
编写于
7月 22, 2020
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add scala #662
上级
08e4788c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
63 addition
and
1 deletion
+63
-1
build_before_commit.sh
build_before_commit.sh
+0
-1
scala-leetcode/README.md
scala-leetcode/README.md
+1
-0
scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_662.scala
...de/src/main/scala/io/github/dreamylost/Leetcode_662.scala
+62
-0
未找到文件。
build_before_commit.sh
浏览文件 @
375c4f99
...
...
@@ -7,7 +7,6 @@ root_path=`pwd`
# auto compile java and scala
`
gradle
-s
build
>
java_scala_compile.log
`
`
gradle
-s
spotlessApply
>>
java_scala_compile.log
`
`
gradle
-s
build
>>
java_scala_compile.log
`
for
sub_module
in
$(
ls
$root_path
)
do
...
...
scala-leetcode/README.md
浏览文件 @
375c4f99
...
...
@@ -68,6 +68,7 @@ Leetcode Scala 实现
*
[
求根到叶子节点数字之和
](
./src/main/scala/io/github/dreamylost/Leetcode_129.scala
)
*
[
二叉树的前序遍历 迭代
](
./src/main/scala/io/github/dreamylost/Leetcode_129.scala
)
*
[
二叉搜索树迭代器
](
./src/main/scala/io/github/dreamylost/Leetcode_173.scala
)
*
[
二叉树最大宽度
](
./src/main/scala/io/github/dreamylost/Leetcode_662.scala
)
## 链表
...
...
scala-leetcode/src/main/scala/io/github/dreamylost/Leetcode_662.scala
0 → 100644
浏览文件 @
375c4f99
/* Licensed under Apache-2.0 @梦境迷离 */
package
io.github.dreamylost
/**
* 662. 二叉树最大宽度
*
* 给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。
*
* 每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。
*
* @see https://github.com/jxnu-liguobin/cs-summary-reflection
* @author 梦境迷离
* @version 1.0,2020/7/22
*/
object
Leetcode_662
extends
App
{
val
ret
=
widthOfBinaryTree
(
TreeNodeData
.
treeData3
())
println
(
ret
)
/**
* 层序遍历,记录每个节点的索引
* 600 ms,100.00%
* 51.6 MB,100.00%
*
* @param root
* @return
*/
def
widthOfBinaryTree
(
root
:
TreeNode
)
:
Int
=
{
if
(
root
==
null
)
return
0
if
(
root
.
left
==
null
&&
root
.
right
==
null
)
return
1
var
ret
=
1
var
nodeQueue
=
List
[
TreeNode
]()
nodeQueue
=
nodeQueue
:::
List
(
root
)
var
indexedQueue
=
Seq
.
empty
[
Int
]
indexedQueue
=
indexedQueue
++
Seq
(
1
)
var
size
=
1
while
(
nodeQueue
.
nonEmpty
)
{
size
-=
1
val
index
=
indexedQueue
.
head
indexedQueue
=
indexedQueue
.
tail
val
node
=
nodeQueue
.
head
nodeQueue
=
nodeQueue
.
tail
//根据满二叉树子树下标与父节点的关系,记录左右子树的下标位置
if
(
node
.
left
!=
null
)
{
nodeQueue
=
nodeQueue
:::
List
(
node
.
left
)
indexedQueue
=
indexedQueue
++
Seq
(
2
*
index
)
}
if
(
node
.
right
!=
null
)
{
nodeQueue
=
nodeQueue
:::
List
(
node
.
right
)
indexedQueue
=
indexedQueue
++
Seq
(
2
*
index
+
1
)
}
//在遍历完当前层时,判断下标是否存在大于2个以上的元素,就使用两个边界计算宽度
if
(
size
==
0
)
{
if
(
indexedQueue
.
size
>=
2
)
{
ret
=
math
.
max
(
ret
,
indexedQueue
.
last
-
indexedQueue
.
head
+
1
)
}
size
=
nodeQueue
.
size
}
}
ret
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录