AC代码:
class Solution(object): def findMode(self, root): """ :type root: TreeNode :rtype: List[int] """ self.ans = [] self.max = 1 if root == None: return [] r = root self.tmp = root.val+1 self.num = 0 while r.left: r = r.left self.tmp = r.val+1 self.findnum(root) return self.ans def findnum(self, node): if node.left != None: self.findnum(node.left) if node.val == self.tmp: self.num += 1 else: self.num = 1 self.tmp = node.val if self.num > self.max: self.ans = [node.val] self.max = self.num elif self.num == self.max: if node.val not in self.ans: self.ans.append(node.val) if node.right != None: self.findnum(node.right)解题思路:为了不使用额外的存储空间,需要按照递增的顺序遍历BST,中序遍历可满足遍历的顺序递增,增加三个变量,tmp,max及num,tmp记录的是上次访问的数,num记录的是连续相等数,max记录的是最大的num。将num与max比较,若相等且ans中没有该node,则将node加入ans中。若num大于max,则将ans清零,且加入该node,max换为num。
新闻热点
疑难解答