当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2022-10-26
Python描述 LeetCode 508. 出现次数最多的子树元素和   大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号 GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发


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

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

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

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

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

题目

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

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

示例 1:

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

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

示例 2:

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

输入: 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 54. 螺旋矩阵
下一篇:没有了
网友评论