@@ -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