[LeetCode] 501. 二叉搜索树中的众数

86 阅读1分钟

501. 二叉搜索树中的众数

Easy

思路

使用最简单粗暴的方式求解:

  • 使用一个计数器,统计遍历到的节点的值的数量
  • 使用DFS方式遍历树
  • 最后将计数器排序,统计出计数器中数量最多的值

以上,尝试写一下代码,AC!

代码

python3

class Solution:
  def findMode(self, root: TreeNode) -> List[int]:
    counter = collections.defaultdict(int)
    def dfs(node):
      if node is None:
        return
      counter[node.val] += 1
      dfs(node.left)
      dfs(node.right)
      return 

    dfs(root)
    sorted_counter = sorted(counter.items(), key = lambda kv: kv[1], reverse = True)
    pre_c = 0
    res = []
    for i in sorted_counter:
      if i[1] >= pre_c:
        res.append(i[0])
        pre_c = i[1]
      else:
        break
    return res