首页 > 编程 > Python > 正文

Leetcode 494 python 解题报告

2019-11-08 02:17:29
字体:
来源:转载
供稿:网友

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。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表