mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Merge pull request #1352 from wzqwtt/tree03
添加(199.二叉树的右视图、637.二叉树的层平均值、429.N叉树的层序遍历)Scala版本
This commit is contained in:
@ -880,6 +880,31 @@ func rightSideView(_ root: TreeNode?) -> [Int] {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Scala:
|
||||||
|
```scala
|
||||||
|
// 199.二叉树的右视图
|
||||||
|
object Solution {
|
||||||
|
import scala.collection.mutable
|
||||||
|
def rightSideView(root: TreeNode): List[Int] = {
|
||||||
|
val res = mutable.ListBuffer[Int]()
|
||||||
|
if (root == null) return res.toList
|
||||||
|
val queue = mutable.Queue[TreeNode]()
|
||||||
|
queue.enqueue(root)
|
||||||
|
while (!queue.isEmpty) {
|
||||||
|
val len = queue.size
|
||||||
|
var curNode: TreeNode = null
|
||||||
|
for (i <- 0 until len) {
|
||||||
|
curNode = queue.dequeue()
|
||||||
|
if (curNode.left != null) queue.enqueue(curNode.left)
|
||||||
|
if (curNode.right != null) queue.enqueue(curNode.right)
|
||||||
|
}
|
||||||
|
res.append(curNode.value) // 把最后一个节点的值加入解集
|
||||||
|
}
|
||||||
|
res.toList // 最后需要把res转换为List,return关键字可以省略
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# 637.二叉树的层平均值
|
# 637.二叉树的层平均值
|
||||||
|
|
||||||
[力扣题目链接](https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/)
|
[力扣题目链接](https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/)
|
||||||
@ -1111,6 +1136,30 @@ func averageOfLevels(_ root: TreeNode?) -> [Double] {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Scala:
|
||||||
|
```scala
|
||||||
|
// 637.二叉树的层平均值
|
||||||
|
object Solution {
|
||||||
|
import scala.collection.mutable
|
||||||
|
def averageOfLevels(root: TreeNode): Array[Double] = {
|
||||||
|
val res = mutable.ArrayBuffer[Double]()
|
||||||
|
val queue = mutable.Queue[TreeNode]()
|
||||||
|
queue.enqueue(root)
|
||||||
|
while (!queue.isEmpty) {
|
||||||
|
var sum = 0.0
|
||||||
|
var len = queue.size
|
||||||
|
for (i <- 0 until len) {
|
||||||
|
var curNode = queue.dequeue()
|
||||||
|
sum += curNode.value // 累加该层的值
|
||||||
|
if (curNode.left != null) queue.enqueue(curNode.left)
|
||||||
|
if (curNode.right != null) queue.enqueue(curNode.right)
|
||||||
|
}
|
||||||
|
res.append(sum / len) // 平均值即为sum/len
|
||||||
|
}
|
||||||
|
res.toArray // 最后需要转换为Array,return关键字可以省略
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# 429.N叉树的层序遍历
|
# 429.N叉树的层序遍历
|
||||||
|
|
||||||
@ -1355,6 +1404,34 @@ func levelOrder(_ root: Node?) -> [[Int]] {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Scala:
|
||||||
|
```scala
|
||||||
|
// 429.N叉树的层序遍历
|
||||||
|
object Solution {
|
||||||
|
import scala.collection.mutable
|
||||||
|
def levelOrder(root: Node): List[List[Int]] = {
|
||||||
|
val res = mutable.ListBuffer[List[Int]]()
|
||||||
|
if (root == null) return res.toList
|
||||||
|
val queue = mutable.Queue[Node]()
|
||||||
|
queue.enqueue(root) // 根节点入队
|
||||||
|
while (!queue.isEmpty) {
|
||||||
|
val tmp = mutable.ListBuffer[Int]() // 存储每层节点
|
||||||
|
val len = queue.size
|
||||||
|
for (i <- 0 until len) {
|
||||||
|
val curNode = queue.dequeue()
|
||||||
|
tmp.append(curNode.value) // 将该节点的值加入tmp
|
||||||
|
// 循环遍历该节点的子节点,加入队列
|
||||||
|
for (child <- curNode.children) {
|
||||||
|
queue.enqueue(child)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res.append(tmp.toList) // 将该层的节点放到结果集
|
||||||
|
}
|
||||||
|
res.toList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# 515.在每个树行中找最大值
|
# 515.在每个树行中找最大值
|
||||||
|
|
||||||
[力扣题目链接](https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/)
|
[力扣题目链接](https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/)
|
||||||
|
Reference in New Issue
Block a user