mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
添加 0112.路径总和.md Scala版本
This commit is contained in:
@ -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,即可返回false,return关键字可以省略
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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>
|
||||||
|
Reference in New Issue
Block a user