添加 0112.路径总和.md Scala版本

This commit is contained in:
ZongqinWang
2022-05-24 20:58:07 +08:00
parent b78e750f8f
commit 1a01fe3237

View File

@ -300,7 +300,7 @@ public:
## java ## java
lc112 ### 0112.路径总和
```java ```java
class solution { class solution {
public boolean haspathsum(treenode root, int targetsum) { public boolean haspathsum(treenode root, int targetsum) {
@ -373,7 +373,7 @@ class solution {
``` ```
0113.路径总和-ii ### 0113.路径总和-ii
```java ```java
class solution { class solution {
@ -436,7 +436,7 @@ class Solution {
## python ## python
0112.路径总和 ### 0112.路径总和
**递归** **递归**
```python ```python
@ -488,7 +488,7 @@ class solution:
return false return false
``` ```
0113.路径总和-ii ### 0113.路径总和-ii
**递归** **递归**
```python ```python
@ -545,7 +545,7 @@ class Solution:
## go ## go
112. 路径总和 ### 112. 路径总和
```go ```go
//递归法 //递归法
@ -570,7 +570,7 @@ func hasPathSum(root *TreeNode, targetSum int) bool {
} }
``` ```
113. 路径总和 II ### 113. 路径总和 II
```go ```go
/** /**
@ -612,7 +612,7 @@ func traverse(node *TreeNode, result *[][]int, currPath *[]int, targetSum int) {
## javascript ## javascript
0112.路径总和 ### 0112.路径总和
**递归** **递归**
```javascript ```javascript
@ -673,7 +673,7 @@ let hasPathSum = function(root, targetSum) {
}; };
``` ```
0113.路径总和-ii ### 0113.路径总和-ii
**递归** **递归**
```javascript ```javascript
@ -768,7 +768,7 @@ let pathSum = function(root, targetSum) {
## TypeScript ## TypeScript
> 0112.路径总和 ### 0112.路径总和
**递归法:** **递归法:**
@ -850,7 +850,7 @@ function hasPathSum(root: TreeNode | null, targetSum: number): boolean {
}; };
``` ```
> 0112.路径总和 ii ### 0112.路径总和 ii
**递归法:** **递归法:**
@ -888,7 +888,7 @@ function pathSum(root: TreeNode | null, targetSum: number): number[][] {
## Swift ## Swift
0112.路径总和 ### 0112.路径总和
**递归** **递归**
@ -955,7 +955,7 @@ func hasPathSum(_ root: TreeNode?, _ targetSum: Int) -> Bool {
} }
``` ```
0113.路径总和 II ### 0113.路径总和 II
**递归** **递归**
@ -1006,7 +1006,90 @@ func traversal(_ cur: TreeNode?, count: Int) {
} }
``` ```
## Scala
### 0112.路径总和
**递归:**
```scala
object Solution {
def hasPathSum(root: TreeNode, targetSum: Int): Boolean = {
if(root == null) return false
var res = false
def traversal(curNode: TreeNode, sum: Int): Unit = {
if (res) return // 如果直接标记为true了就没有往下递归的必要了
if (curNode.left == null && curNode.right == null && sum == targetSum) {
res = true
return
}
// 往下递归
if (curNode.left != null) traversal(curNode.left, sum + curNode.left.value)
if (curNode.right != null) traversal(curNode.right, sum + curNode.right.value)
}
traversal(root, root.value)
res // return关键字可以省略
}
}
```
**迭代:**
```scala
object Solution {
import scala.collection.mutable
def hasPathSum(root: TreeNode, targetSum: Int): Boolean = {
if (root == null) return false
val stack = mutable.Stack[(TreeNode, Int)]()
stack.push((root, root.value)) // 将根节点元素放入stack
while (!stack.isEmpty) {
val curNode = stack.pop() // 取出栈顶元素
// 如果遇到叶子节点看当前的值是否等于targetSum等于则返回true
if (curNode._1.left == null && curNode._1.right == null && curNode._2 == targetSum) {
return true
}
if (curNode._1.right != null) stack.push((curNode._1.right, curNode._2 + curNode._1.right.value))
if (curNode._1.left != null) stack.push((curNode._1.left, curNode._2 + curNode._1.left.value))
}
false //如果没有返回true即可返回falsereturn关键字可以省略
}
}
```
### 0113.路径总和 II
**递归:**
```scala
object Solution {
import scala.collection.mutable.ListBuffer
def pathSum(root: TreeNode, targetSum: Int): List[List[Int]] = {
val res = ListBuffer[List[Int]]()
if (root == null) return res.toList
val path = ListBuffer[Int]();
def traversal(cur: TreeNode, count: Int): Unit = {
if (cur.left == null && cur.right == null && count == 0) {
res.append(path.toList)
return
}
if (cur.left != null) {
path.append(cur.left.value)
traversal(cur.left, count - cur.left.value)
path.remove(path.size - 1)
}
if (cur.right != null) {
path.append(cur.right.value)
traversal(cur.right, count - cur.right.value)
path.remove(path.size - 1)
}
}
path.append(root.value)
traversal(root, targetSum - root.value)
res.toList
}
}
```
----------------------- -----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div> <div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>