1382. 将二叉搜索树变平衡
题目描述
解题思路
本题利用二叉搜索树BST性质中序遍历有序,然后二分法建一颗平衡二叉树
代码实现
class Solution:
def balanceBST(self, root: TreeNode) -> TreeNode:
self.arr = []
def inorder(root: TreeNode) -> None:
if not root:
return
inorder(root.left)
self.arr.append(root.val)
inorder(root.right)
def build(arr: List[int], left: int, right: int) -> TreeNode:
if left > right:
return
mid = left + (right - left) // 2
root = TreeNode(arr[mid])
root.left = build(arr, left, mid - 1)
root.right = build(arr, mid + 1, right)
return root
inorder(root)
root = build(self.arr, 0, len(self.arr) - 1)
return root