基础版,利用hash,即python中的字典,key存节点,value存出现的次数
class solution:
def findMode(self, root):
tmp = {}
ans = []
if not root:
return ans
def countNode(r):
if r.val in tmp.keys():
tmp[r.val] += 1
else:
tmp[r.val] = 1
if r.left:
countNode(r.left)
if r.right:
countNode(r.right)
countNode(root)
mode = max(tmp.values())
for key, value in tmp.items():
if value == mode:
ans.append(key)
return ans
进阶版:不使用额外的空间
tips:二叉搜索树的中序遍历是递增的,指针p,ans存储结果,遍历,出现count等于最高频率,将node存入ans,出现count大于当前最高频率,ans清空