From a69ee03b3eea09f7e2bb113b631462eadd313482 Mon Sep 17 00:00:00 2001
From: ZongqinWang <1722249371@qq.com>
Date: Tue, 24 May 2022 18:59:17 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=200404.=E5=B7=A6?=
=?UTF-8?q?=E5=8F=B6=E5=AD=90=E4=B9=8B=E5=92=8C.md=20Scala=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0404.左叶子之和.md | 38 ++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/problems/0404.左叶子之和.md b/problems/0404.左叶子之和.md
index d7fd629e..78fc58f3 100644
--- a/problems/0404.左叶子之和.md
+++ b/problems/0404.左叶子之和.md
@@ -516,6 +516,44 @@ int sumOfLeftLeaves(struct TreeNode* root){
}
```
+## Scala
+
+**递归:**
+```scala
+object Solution {
+ def sumOfLeftLeaves(root: TreeNode): Int = {
+ if(root == null) return 0
+ var midValue = 0
+ if(root.left != null && root.left.left == null && root.left.right == null){
+ midValue = root.left.value
+ }
+ // return关键字可以省略
+ midValue + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right)
+ }
+}
+```
+
+**迭代:**
+```scala
+object Solution {
+ import scala.collection.mutable
+ def sumOfLeftLeaves(root: TreeNode): Int = {
+ val stack = mutable.Stack[TreeNode]()
+ if (root == null) return 0
+ stack.push(root)
+ var sum = 0
+ while (!stack.isEmpty) {
+ val curNode = stack.pop()
+ if (curNode.left != null && curNode.left.left == null && curNode.left.right == null) {
+ sum += curNode.left.value // 如果满足条件就累加
+ }
+ if (curNode.right != null) stack.push(curNode.right)
+ if (curNode.left != null) stack.push(curNode.left)
+ }
+ sum
+ }
+}
+```
-----------------------
From 17a2ea3c435677f9b7b21a413bac1939208fae22 Mon Sep 17 00:00:00 2001
From: ZongqinWang <1722249371@qq.com>
Date: Tue, 24 May 2022 19:21:53 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=200513.=E6=89=BE?=
=?UTF-8?q?=E6=A0=91=E5=B7=A6=E4=B8=8B=E8=A7=92=E7=9A=84=E5=80=BC.md=20Sca?=
=?UTF-8?q?la=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0513.找树左下角的值.md | 43 ++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/problems/0513.找树左下角的值.md b/problems/0513.找树左下角的值.md
index 12c62c70..296fe478 100644
--- a/problems/0513.找树左下角的值.md
+++ b/problems/0513.找树左下角的值.md
@@ -546,7 +546,50 @@ func findBottomLeftValue(_ root: TreeNode?) -> Int {
}
```
+## Scala
+递归版本:
+```scala
+object Solution {
+ def findBottomLeftValue(root: TreeNode): Int = {
+ var maxLeftValue = 0
+ var maxLen = Int.MinValue
+ // 递归方法
+ def traversal(node: TreeNode, leftLen: Int): Unit = {
+ // 如果左右都为空并且当前深度大于最大深度,记录最左节点的值
+ if (node.left == null && node.right == null && leftLen > maxLen) {
+ maxLen = leftLen
+ maxLeftValue = node.value
+ }
+ if (node.left != null) traversal(node.left, leftLen + 1)
+ if (node.right != null) traversal(node.right, leftLen + 1)
+ }
+ traversal(root, 0) // 调用方法
+ maxLeftValue // return关键字可以省略
+ }
+}
+```
+
+层序遍历:
+```scala
+ import scala.collection.mutable
+
+ def findBottomLeftValue(root: TreeNode): Int = {
+ val queue = mutable.Queue[TreeNode]()
+ queue.enqueue(root)
+ var res = 0 // 记录每层最左侧结果
+ while (!queue.isEmpty) {
+ val len = queue.size
+ for (i <- 0 until len) {
+ val curNode = queue.dequeue()
+ if (i == 0) res = curNode.value // 记录最最左侧的节点
+ if (curNode.left != null) queue.enqueue(curNode.left)
+ if (curNode.right != null) queue.enqueue(curNode.right)
+ }
+ }
+ res // 最终返回结果,return关键字可以省略
+ }
+```
-----------------------