Hello everyone , I'm Qi Guanjie (qí guān jié ), stay 【 Qi Guanjie 】 official account 、CSDN、GitHub、B Share some technical blog posts on the website and other platforms , It mainly includes front-end development 、python The backend development 、 Applet development 、 Data structure and algorithm 、docker、Linux Common operation and maintenance 、NLP And other related technical blog , Time flies , Future period , come on. ~
If you love bloggers, you can focus on the bloggers' official account. 【 Qi Guanjie 】(qí guān jié), The articles inside are more complete and updated faster . If you need to find a blogger, you can leave a message at the official account. , I will reply to the message as soon as possible .
This article was originally written as 【 Qi Guanjie 】(qí guān jié ), Please support the original , Some platforms have been stealing blog articles maliciously !!! All articles please pay attention to WeChat official account 【 Qi Guanjie 】.
Give you a root node of binary tree root
, Please return the most frequent subtree elements and . If more than one element appears the same number of times , Returns all the most frequent subtree elements and ( Unlimited order ).
Of a node 「 Subtree elements and 」 It is defined as the sum of the elements of all nodes in the binary tree with the node as the root ( Including the node itself ).
Example 1:
Input : root = [5,2,-3]
Output : [2,-3,4]
Example 2:
Input : root = [5,2,-5]
Output : [2]
Tips :
[1, 104]
Within the scope of -105 <= Node.val <= 105
Recursive computation sum, Count the number of occurrences
# 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 res