题解 | #牛牛的二叉树问题#
牛牛的二叉树问题
https://www.nowcoder.com/practice/1b80046da95841a9b648b10f1106b04e
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @param target double浮点型
# @param m int整型
# @return int整型一维数组
#
import heapq
import math
class Solution:
def findClosestElements(self , root: TreeNode, target: float, m: int) -> List[int]:
# write code here
res = list()
heap = []
def dfs(node):
if not node:
return None
# 首先递归处理左子节点
dfs(node.left)
dfs(node.right)
current_val = node.val
if current_val:
heapq.heappush(heap, (abs(current_val - target), current_val))
return node.val
dfs(root)
while m > 0:
if heap:
val = heapq.heappop(heap)[1]
res.append(val)
m -= 1
res.sort()
return res

