給定一個二叉搜索樹 (BST),你的目標是將其轉換為一棵高度平衡的二叉搜索樹。高度平衡的意思是:一棵二叉樹的每個節點的兩棵子樹的高度差不超過 1。
class Solution:
def balanceBST(self, root: TreeNode) -> TreeNode:
# Step 1: 中序遍歷,獲取排序後的節點列表
def inorderTraversal(node):
if not node:
return []
return inorderTraversal(node.left) + [node] + inorderTraversal(node.right)
sorted_nodes = inorderTraversal(root)
# Step 2: 根據排序後的節點列表構建平衡二叉樹
def buildBalancedBST(nodes):
if not nodes:
return None
mid = len(nodes) // 2
root = nodes[mid]
root.left = buildBalancedBST(nodes[:mid])
root.right = buildBalancedBST(nodes[mid+1:])
return root
return buildBalancedBST(sorted_nodes)