更新 0501.二叉搜索树中的众数 排版格式修复

This commit is contained in:
jinbudaily
2023-07-23 17:57:10 +08:00
parent 74bbca2923
commit 55b85b5251

View File

@ -33,20 +33,20 @@
进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)
# 算法公开课
## 算法公开课
**《代码随想录》算法视频公开课:[不仅双指针,还有代码技巧可以惊艳到你! | LeetCode501.二叉搜索树中的众数](https://www.bilibili.com/video/BV1fD4y117gp),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[不仅双指针,还有代码技巧可以惊艳到你! | LeetCode501.二叉搜索树中的众数](https://www.bilibili.com/video/BV1fD4y117gp),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
# 思路
## 思路
这道题目呢,递归法我从两个维度来讲。
首先如果不是二叉搜索树的话,应该怎么解题,是二叉搜索树,又应该如何解题,两种方式做一个比较,可以加深大家对二叉树的理解。
## 递归法
### 递归法
### 如果不是二叉搜索树
#### 如果不是二叉搜索树
如果不是二叉搜索树最直观的方法一定是把这个树都遍历了用map统计频率把频率排个序最后取前面高频的元素的集合。
@ -140,7 +140,7 @@ public:
**所以如果本题没有说是二叉搜索树的话,那么就按照上面的思路写!**
### 是二叉搜索树
#### 是二叉搜索树
**既然是搜索树,它中序遍历就是有序的**
@ -271,7 +271,7 @@ public:
```
## 迭代法
### 迭代法
只要把中序遍历转成迭代,中间节点的处理逻辑完全一样。
@ -326,7 +326,7 @@ public:
};
```
# 总结
## 总结
本题在递归法中,我给出了如果是普通二叉树,应该怎么求众数。
@ -345,10 +345,10 @@ public:
> **需要强调的是 leetcode上的耗时统计是非常不准确的看个大概就行一样的代码耗时可以差百分之50以上**所以leetcode的耗时统计别太当回事知道理论上的效率优劣就行了。
# 其他语言版本
## 其他语言版本
## Java
### Java
暴力法
@ -472,7 +472,7 @@ class Solution {
}
}
```
一迭代法
一迭代法
```Java
class Solution {
public int[] findMode(TreeNode root) {
@ -526,7 +526,7 @@ class Solution {
```
## Python
### Python
递归法(版本一)利用字典
@ -640,7 +640,7 @@ class Solution:
return result
```
## Go
### Go
计数法,不使用额外空间,利用二叉树性质,中序遍历
```go
@ -676,7 +676,7 @@ func findMode(root *TreeNode) []int {
}
```
## JavaScript
### JavaScript
使用额外空间map的方法
```javascript
@ -753,7 +753,7 @@ var findMode = function(root) {
};
```
## TypeScript
### TypeScript
> 辅助Map法
@ -852,7 +852,7 @@ function findMode(root: TreeNode | null): number[] {
};
```
## Scala
### Scala
暴力:
```scala
@ -923,7 +923,7 @@ object Solution {
}
```
## rust
### Rust
递归:
@ -1015,3 +1015,4 @@ pub fn find_mode(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<i32> {
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>