classSolution:deffindMode(self, root: Optional[TreeNode])-> List[int]:from collections import Counter
values = Counter()
max_freq =0defdfs(root):nonlocal max_freq
if root==None:return
values[root.val]+=1
max_freq =max(max_freq, values[root.val])
dfs(root.left)
dfs(root.right)return values , max_freq
values, max_freq = dfs(root)return[num for num in values if values[num]== max_freq]
Leetcode 236. Lowest Common Ancestor of a Binary Tree
classSolution:deflowestCommonAncestor(self, root:'TreeNode', p:'TreeNode', q:'TreeNode')->'TreeNode':ifnot root or root == p or root == q:return root
left = self.lowestCommonAncestor(root.left, p, q)
right = self.lowestCommonAncestor(root.right, p, q)if left and right:return root
if left:return left
return right