Skip to content

Commit

Permalink
Merge pull request youngyangyang04#825 from casnz1601/patch-5
Browse files Browse the repository at this point in the history
Update 0501.二叉搜索树中的众数.md
  • Loading branch information
youngyangyang04 authored Oct 10, 2021
2 parents 544a249 + 970a441 commit b5dcc55
Showing 1 changed file with 43 additions and 27 deletions.
70 changes: 43 additions & 27 deletions problems/0501.二叉搜索树中的众数.md
Original file line number Diff line number Diff line change
Expand Up @@ -470,38 +470,54 @@ class Solution {

## Python

递归法

```python
> 递归法
```python3
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def __init__(self):
self.pre = TreeNode()
self.count = 0
self.max_count = 0
self.result = []

def findMode(self, root: TreeNode) -> List[int]:
if not root: return
self.pre = root
self.count = 0 //统计频率
self.countMax = 0 //最大频率
self.res = []
def findNumber(root):
if not root: return None // 第一个节点
findNumber(root.left) //
if self.pre.val == root.val: //中: 与前一个节点数值相同
self.count += 1
else: // 与前一个节点数值不同
self.pre = root
self.count = 1
if self.count > self.countMax: // 如果计数大于最大值频率
self.countMax = self.count // 更新最大频率
self.res = [root.val] //更新res
elif self.count == self.countMax: // 如果和最大值相同,放进res中
self.res.append(root.val)
findNumber(root.right) //
return
findNumber(root)
return self.res
if not root: return None
self.search_BST(root)
return self.result

def search_BST(self, cur: TreeNode) -> None:
if not cur: return None
self.search_BST(cur.left)
# 第一个节点
if not self.pre:
self.count = 1
# 与前一个节点数值相同
elif self.pre.val == cur.val:
self.count += 1
# 与前一个节点数值不相同
else:
self.count = 1
self.pre = cur

if self.count == self.max_count:
self.result.append(cur.val)

if self.count > self.max_count:
self.max_count = self.count
self.result = [cur.val] # 清空self.result,确保result之前的的元素都失效

self.search_BST(cur.right)
```


迭代法-中序遍历-不使用额外空间,利用二叉搜索树特性
```python
> 迭代法-中序遍历-不使用额外空间,利用二叉搜索树特性
```python3
class Solution:
def findMode(self, root: TreeNode) -> List[int]:
stack = []
Expand Down

0 comments on commit b5dcc55

Please sign in to comment.