Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e4d638f

Browse files
Merge pull request youngyangyang04#1352 from wzqwtt/tree03
添加(199.二叉树的右视图、637.二叉树的层平均值、429.N叉树的层序遍历)Scala版本
2 parents 71865c1 + c922fbc commit e4d638f

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

‎problems/0102.二叉树的层序遍历.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,31 @@ func rightSideView(_ root: TreeNode?) -> [Int] {
880880
}
881881
```
882882

883+
Scala:
884+
```scala
885+
// 199.二叉树的右视图
886+
object Solution {
887+
import scala.collection.mutable
888+
def rightSideView(root: TreeNode): List[Int] = {
889+
val res = mutable.ListBuffer[Int]()
890+
if (root == null) return res.toList
891+
val queue = mutable.Queue[TreeNode]()
892+
queue.enqueue(root)
893+
while (!queue.isEmpty) {
894+
val len = queue.size
895+
var curNode: TreeNode = null
896+
for (i <- 0 until len) {
897+
curNode = queue.dequeue()
898+
if (curNode.left != null) queue.enqueue(curNode.left)
899+
if (curNode.right != null) queue.enqueue(curNode.right)
900+
}
901+
res.append(curNode.value) // 把最后一个节点的值加入解集
902+
}
903+
res.toList // 最后需要把res转换为List,return关键字可以省略
904+
}
905+
}
906+
```
907+
883908
# 637.二叉树的层平均值
884909

885910
[力扣题目链接](https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/)
@@ -1111,6 +1136,30 @@ func averageOfLevels(_ root: TreeNode?) -> [Double] {
11111136
return result
11121137
}
11131138
```
1139+
Scala:
1140+
```scala
1141+
// 637.二叉树的层平均值
1142+
object Solution {
1143+
import scala.collection.mutable
1144+
def averageOfLevels(root: TreeNode): Array[Double] = {
1145+
val res = mutable.ArrayBuffer[Double]()
1146+
val queue = mutable.Queue[TreeNode]()
1147+
queue.enqueue(root)
1148+
while (!queue.isEmpty) {
1149+
var sum = 0.0
1150+
var len = queue.size
1151+
for (i <- 0 until len) {
1152+
var curNode = queue.dequeue()
1153+
sum += curNode.value // 累加该层的值
1154+
if (curNode.left != null) queue.enqueue(curNode.left)
1155+
if (curNode.right != null) queue.enqueue(curNode.right)
1156+
}
1157+
res.append(sum / len) // 平均值即为sum/len
1158+
}
1159+
res.toArray // 最后需要转换为Array,return关键字可以省略
1160+
}
1161+
}
1162+
```
11141163

11151164
# 429.N叉树的层序遍历
11161165

@@ -1355,6 +1404,34 @@ func levelOrder(_ root: Node?) -> [[Int]] {
13551404
}
13561405
```
13571406

1407+
Scala:
1408+
```scala
1409+
// 429.N叉树的层序遍历
1410+
object Solution {
1411+
import scala.collection.mutable
1412+
def levelOrder(root: Node): List[List[Int]] = {
1413+
val res = mutable.ListBuffer[List[Int]]()
1414+
if (root == null) return res.toList
1415+
val queue = mutable.Queue[Node]()
1416+
queue.enqueue(root) // 根节点入队
1417+
while (!queue.isEmpty) {
1418+
val tmp = mutable.ListBuffer[Int]() // 存储每层节点
1419+
val len = queue.size
1420+
for (i <- 0 until len) {
1421+
val curNode = queue.dequeue()
1422+
tmp.append(curNode.value) // 将该节点的值加入tmp
1423+
// 循环遍历该节点的子节点,加入队列
1424+
for (child <- curNode.children) {
1425+
queue.enqueue(child)
1426+
}
1427+
}
1428+
res.append(tmp.toList) // 将该层的节点放到结果集
1429+
}
1430+
res.toList
1431+
}
1432+
}
1433+
```
1434+
13581435
# 515.在每个树行中找最大值
13591436

13601437
[力扣题目链接](https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /