# Given a binary search tree (BST) with duplicates, find all the mode(s) (the mo # st frequently occurred element) in the given BST. # # Assume a BST is defined as follows: # # # The left subtree of a node contains only nodes with keys less than or equal t # o the node's key. # The right subtree of a node contains only nodes with keys greater than or equ # al to the node's key. # Both the left and right subtrees must also be binary search trees. # # # # # For example: # Given BST [1,null,2,2], # # # 1 # \ # 2 # / # 2 # # # # # return [2]. # # Note: If a tree has more than one mode, you can return them in any order. # # Follow up: Could you do that without using any extra space? (Assume that the # implicit stack space incurred due to recursion does not count). # Related Topics 树 # 👍 163 👎 0
classSolution: deffindMode(self, root: TreeNode) -> List[int]: count = {} defdfs(root, count): if (not root): return count[root.val] = count.get(root.val, 0) + 1 dfs(root.left, count) dfs(root.right, count) dfs(root, count) maxNum = 0 list = [] for item in count.items(): if item[1] > maxNum: list.clear(); list.append(item[0]) maxNum = item[1] elif item[1] == maxNum: list.append(item[0]) return list