Python如何实现LeetCode 508题:找出出现次数最多的子树元素和的子树?

2026-05-27 23:311阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计589个文字,预计阅读时间需要3分钟。

Python如何实现LeetCode 508题:找出出现次数最多的子树元素和的子树?

Python描述 + LeetCode 508. 出现次数最多的子树元素和大家好,我是技术官(qí+guǎn+jí+è),在【技术官】公众号、GitHub、B站等平台分享一些技术博客,主要涵盖前端开发、Python后端开发等内容。


Python描述 LeetCode 508. 出现次数最多的子树元素和

  大家好,我是亓官劼(qí guān jié ),在公众号 GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

本文原创为(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号。

题目

给你一个二叉树的根结点 ​​root​​ ,请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。

一个结点的 「子树元素和」 定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。

示例 1:

输入: root = [5,2,-3]
输出: [2,-3,4]

示例 2:

输入: root = [5,2,-5]
输出: [2]

提示:

  • 节点数在​​[1, 104]​​ 范围内
  • ​​-105 <= Node.val <= 105​​

Python描述

递归计算sum,然后统计出现次数

# 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 = right
class Solution:
def findFrequentTreeSum(self, root: TreeNode) -> List[int]:
tmp = {}
def get_sum(node):
if node is None:
return 0
s = get_sum(node.left) + get_sum(node.right) + node.val
tmp[s] = tmp.get(s,[]) + [node.val,]
return s
get_sum(root)
max_len = 0
for item in tmp.values():
max_len = max(max_len,len(item))
res = []
for key,item in tmp.items():
if len(item) == max_len:
res.append(key)
return


Python如何实现LeetCode 508题:找出出现次数最多的子树元素和的子树?

本文共计589个文字,预计阅读时间需要3分钟。

Python如何实现LeetCode 508题:找出出现次数最多的子树元素和的子树?

Python描述 + LeetCode 508. 出现次数最多的子树元素和大家好,我是技术官(qí+guǎn+jí+è),在【技术官】公众号、GitHub、B站等平台分享一些技术博客,主要涵盖前端开发、Python后端开发等内容。


Python描述 LeetCode 508. 出现次数最多的子树元素和

  大家好,我是亓官劼(qí guān jié ),在公众号 GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

本文原创为(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号。

题目

给你一个二叉树的根结点 ​​root​​ ,请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。

一个结点的 「子树元素和」 定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。

示例 1:

输入: root = [5,2,-3]
输出: [2,-3,4]

示例 2:

输入: root = [5,2,-5]
输出: [2]

提示:

  • 节点数在​​[1, 104]​​ 范围内
  • ​​-105 <= Node.val <= 105​​

Python描述

递归计算sum,然后统计出现次数

# 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 = right
class Solution:
def findFrequentTreeSum(self, root: TreeNode) -> List[int]:
tmp = {}
def get_sum(node):
if node is None:
return 0
s = get_sum(node.left) + get_sum(node.right) + node.val
tmp[s] = tmp.get(s,[]) + [node.val,]
return s
get_sum(root)
max_len = 0
for item in tmp.values():
max_len = max(max_len,len(item))
res = []
for key,item in tmp.items():
if len(item) == max_len:
res.append(key)
return


Python如何实现LeetCode 508题:找出出现次数最多的子树元素和的子树?