class Solution:
def nextGreaterElements(self, nums: List[int]) -> List[int]:
l = len(nums)
res = [-1 for _ in range(l)]
stack = []
double_nums = nums + nums
for index,num in enumerate(double_nums):
while stack and nums[stack[-1]] < num:
res[stack[-1]] = num
stack.pop()
if index < l:
stack.append(index)
return res
class Solution:
def findFrequentTreeSum(self, root: TreeNode) -> List[int]:
if not root:
return []
d = {}
self.dfs(root,d)
k = max(d.values())
res = []
for i in d:
if d[i] == k:
res.append(i)
return res
def dfs(self,root,d):
if not root:
return 0
s = self.dfs(root.left,d) + self.dfs(root.right,d) + root.val
d[s] = d.get(s,0) + 1
return s