自己寫的:
class Solution: # getMinimumDifference 方法接收一個二叉樹的根節點 root,並返回樹中所有節點值的最小差值 def getMinimumDifference(self, root: Optional[TreeNode]) -> int: # 初始化一個列表用於儲存樹中的節點值 myli = [] # 使用佇列來實現層序遍歷 queue = [root] # 從根節點開始 while queue: # 當佇列非空時繼續遍歷 cur = queue.pop() # 彈出佇列中的最後一個節點 if cur.left: # 如果存在左子節點 queue.append(cur.left) # 將左子節點新增到佇列 if cur.right: # 如果存在右子節點 queue.append(cur.right) # 將右子節點新增到佇列 myli.append(cur.val) # 將當前節點的值新增到列表 myli 中 # 對獲取到的所有節點值進行排序 myli = sorted(myli) # 初始化結果 res 為 -1,表示還沒有找到任何差值 res = -1 # 初始化慢指標和快指標,並設定列表長度 slow_ptr = 0 fast_ptr = 1 n = len(myli) # 使用雙指標技術遍歷排序後的列表,尋找最小差值 while fast_ptr < n: # 如果這是第一次賦值,或者找到了更小的差值,則更新 res if res < 0 or abs(myli[fast_ptr] - myli[slow_ptr]) < res: res = abs(myli[fast_ptr] - myli[slow_ptr]) fast_ptr += 1 # 移動快指標 slow_ptr += 1 # 移動慢指標 # 返回找到的最小差值 return res