mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +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统计频率,把频率排个序,最后取前面高频的元素的集合。
|
||||
|
||||
@ -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>
|
||||
|
||||
|
Reference in New Issue
Block a user