530.二叉搜索树的最小绝对差
思路也是 先把二叉搜索树转换成有序数组 在计算出数组内数的差值的最小值
class Solution:
def getMinimumDifference(self, root: Optional[TreeNode]) -> int:
def Traversal(root: Optional[TreeNode], nums: List[int]):
if not root:
return
Traversal(root.left, nums)
nums.append(root.val)
Traversal(root.right, nums)
def getMinGap(nums: List[int]) -> int:
gap = float("inf")
for i in range(1, len(nums)):
g = abs(nums[i] - nums[i - 1])
if g < gap:
gap = g
return gap
nums = []
Traversal(root, nums)
return getMinGap(nums)
501.二叉搜索树中的众数
思路也是 先把二叉搜索树转换成有序数组 然后用哈希表统计每个元素的频次 记录最大频次 找到最大频次对应的元素 加入List中
class Solution:
def findMode(self, root: Optional[TreeNode]) -> List[int]:
def Traversal(root: Optional[TreeNode], nums: List[int]):
if not root:
return
Traversal(root.left, nums)
nums.append(root.val)
Traversal(root.right, nums)
def getMode(nums: List[int]) -> List[int]:
map = dict()
for n in nums:
if n in map:
map[n] += 1
else:
map[n] = 1
maxList = []
max_val = max(map.values())
for key, val in map.items():
if val == max_val:
maxList.append(key)
return maxList
nums = []
Traversal(root, nums)
return getMode(nums)
236. 二叉树的最近公共祖先
后序遍历 回溯
难 还没AC出来