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