-
题目链接 https://leetcode-cn.com/problems/most-frequent-subtree-sum/submissions/
-
题目描述
- 给出二叉树的根,找出出现次数最多的子树元素和。一个结点的子树元素和定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。然后求出出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的元素(不限顺序)。
-
示例 1
输入:5 / \ 2 -3
返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。
示例 2
输入:5 / \ 2 -5
返回 [2],只有 2 出现两次,-5 只出现 1 次。
-
解题思路
- 本题较简单用后序遍历 + 存储
-
代码
- python
class Solution: def __init__(self): self.res = {} def findFrequentTreeSum(self, root: TreeNode) -> List[int]: if not root:return [] self._dfs(root) _max = max(self.res.values()) return [i for i, j in self.res.items() if j == _max] def _dfs(self, root): if not root: return 0 _sum = root.val + self._dfs(root.left) + self._dfs(root.right) self.res[_sum] = self.res.get(_sum, 0) + 1 return _sum
- python
leetcode 508. 出现次数最多的子树元素和
最新推荐文章于 2022-06-19 10:29:58 发布