0257.二叉树的所有路径 排版格式修复

This commit is contained in:
jinbudaily
2023-07-21 15:18:37 +08:00
parent ff6ff4adb8
commit 95b5bb195d

View File

@ -18,9 +18,11 @@
示例:
![257.二叉树的所有路径1](https://code-thinking-1253855093.file.myqcloud.com/pics/2021020415161576.png)
# 思路
## 算法公开课
**《代码随想录》算法视频公开课:[递归中带着回溯,你感受到了没?| LeetCode257. 二叉树的所有路径](https://www.bilibili.com/video/BV1ZG411G7Dh),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[递归中带着回溯,你感受到了没?| LeetCode257. 二叉树的所有路径](https://www.bilibili.com/video/BV1ZG411G7Dh),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
## 思路
这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。
@ -32,7 +34,7 @@
我们先使用递归的方式,来做前序遍历。**要知道递归和回溯就是一家的,本题也需要回溯。**
## 递归
### 递归
1. 递归函数参数以及返回值
@ -305,7 +307,7 @@ public:
**综合以上,第二种递归的代码虽然精简但把很多重要的点隐藏在了代码细节里,第一种递归写法虽然代码多一些,但是把每一个逻辑处理都完整的展现出来了。**
## 拓展
### 拓展
这里讲解本题解的写法逻辑以及一些更具体的细节下面的讲解中涉及到C++语法特性如果不是C++的录友,就可以不看了,避免越看越晕。
@ -328,7 +330,7 @@ public:
所以,第一个代码版本中,我才使用 vector 类型的path这样方便给大家演示代码中回溯的操作。 vector类型的path不管 每次 路径收集的数字是几位数总之一定是int所以就一次 pop_back就可以。
## 迭代法
### 迭代法
至于非递归的方式,我们可以依然可以使用前序遍历的迭代方式来模拟遍历路径的过程,对该迭代方式不了解的同学,可以看文章[二叉树:听说递归能做的,栈也能做!](https://programmercarl.com/二叉树的迭代遍历.html)和[二叉树:前中后序迭代方式统一写法](https://programmercarl.com/二叉树的统一迭代法.html)。
@ -368,7 +370,7 @@ public:
```
当然使用java的同学可以直接定义一个成员变量为object的栈`Stack<Object> stack = new Stack<>();`,这样就不用定义两个栈了,都放到一个栈里就可以了。
# 总结
## 总结
**本文我们开始初步涉及到了回溯,很多同学过了这道题目,可能都不知道自己其实使用了回溯,回溯和递归都是相伴相生的。**
@ -380,13 +382,9 @@ public:
对于本题充分了解递归与回溯的过程之后,有精力的同学可以再去实现迭代法。
## 其他语言版本
# 其他语言版本
## Java
### Java
```Java
//解法一
@ -492,9 +490,9 @@ class Solution {
}
```
---
## Python:
### Python:
递归法+回溯
```Python
# Definition for a binary tree node.
@ -552,7 +550,7 @@ class Solution:
self.traversal(cur.right, path[:], result)
```
递归法+隐形回溯(版本二)
```Python
# Definition for a binary tree node.
@ -610,7 +608,7 @@ class Solution:
---
## Go
### Go
递归法:
@ -672,7 +670,7 @@ func binaryTreePaths(root *TreeNode) []string {
```
---
## JavaScript:
### JavaScript:
递归法:
@ -725,7 +723,7 @@ var binaryTreePaths = function(root) {
};
```
## TypeScript
### TypeScript
> 递归法
@ -779,7 +777,7 @@ function binaryTreePaths(root: TreeNode | null): string[] {
};
```
## Swift:
### Swift:
> 递归/回溯
```swift
@ -846,7 +844,7 @@ func binaryTreePaths(_ root: TreeNode?) -> [String] {
}
```
## Scala:
### Scala:
递归:
```scala
@ -876,7 +874,7 @@ object Solution {
}
```
rust:
### Rust:
```rust
// 递归
@ -907,4 +905,3 @@ impl Solution {
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>