思路:
定义一个字典1,key 为二叉树的值,value 为二叉树的值出现的次数。
定义一个字典2,key 为二叉树的值出现的次数,value (列表)为二叉树的值。
找出字典2 中最大的 key,返回其 value 即可。
class Solution(object):
def createDic(self,root,dic):
if root==None:
return
if root.val in dic:
dic[root.val]+=1
else:
dic[root.val]=1
self.createDic(root.left,dic)
self.createDic(root.right,dic)
def findMode(self, root):
valDic=dict()
self.createDic(root,valDic)
dic2=dict()
arr=[]
for key,value in valDic.items():
arr.append(value)
if value in dic2:
dic2[value].append(key)
else:
dic2[value]=[key]
maxNum=max(arr)
return dic2[maxNum]
题解思路:
中序遍历二叉树得到有序数组,统计数组中的众数。
class Solution(object):
def tra(self,root,arr):
if root==None:
return
self.tra(root.left,arr)
arr.append(root.val)
self.tra(root.right,arr)
def findMode(self, root):
arr=[]
self.tra(root,arr)
if len(arr)==0:
return
last=arr[0]
count=1
maxCount=1
res=[last]
for i in range(1,len(arr)):
if arr[i]==last:
count+=1
if count>maxCount:
res=[]
res.append(last)
maxCount=count
if count==maxCount and last not in res:
res.append(last)
else:
if maxCount==1:
res.append(arr[i])
count=1
last=arr[i]
return res
标签:arr,last,--,res,self,随想录,value,二叉树,root
From: https://blog.csdn.net/weixin_56989647/article/details/142214448