30天Leetcode挑战(11):501 Fine mode in binary tree

碎碎念

好像断更了,但没关係,跟我一起挑战的朋友有持续下去的样子。
今天也是一个跟阅读测验斗智斗勇的题目,而且最后搞出来的程式码大概40行
你真的是easy题目吗......

题干

返回二元树中最常出现的数字,二元树的规则是左边小于等于,右边大于等于。

解题思路

看起来是不难,但问题是我对于这个资料结构很陌生......所以基本上都是叫AI来搞定。
现在我知道我那个朋友昨天说的:「管科的跑来修完资结之后都会很颓丧」的那种感觉,虽然我不是管科就是了。
原本我是叫AI直接扁平化然后数数字,但后来想想其实也不用,直接历遍应该也是没问题。而且他还找了一个酷酷的历遍方式。

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, val=0, left=None, right=None):#         self.val = val#         self.left = left#         self.right = rightclass Solution:    def findMode(self, root: Optional[TreeNode]) -> List[int]:        if not root:            return []        # 初始化相关变量        self.prev_val = None        self.current_count = 0        self.max_count = 0        self.modes = []        # 中序遍历函数        def inorder(node):            if not node:                return            inorder(node.left)            # 更新当前数字出现次数            if self.prev_val == node.val:                self.current_count += 1            else:                self.current_count = 1                self.prev_val = node.val            # 检查是否需要更新模式列表            if self.current_count == self.max_count:                self.modes.append(node.val)            elif self.current_count > self.max_count:                self.max_count = self.current_count                self.modes = [node.val]            inorder(node.right)        # 执行中序遍历        inorder(root)        return self.modes        

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章