1 class Solution: 2 def __init__(self): 3 self.l = [] 4 5 def inOrder(self,node): 6 if node != None: 7 self.inOrder(node.left) 8 self.l.append(node.val) 9 self.inOrder(node.right) 10 11 def bst(self,v): 12 if not v: 13 return None 14 mid = len(v) // 2 15 root = TreeNode(v[mid]) 16 root.left = self.bst(v[:mid]) 17 root.right = self.bst(v[mid + 1:]) 18 return root 19 20 def balanceBST(self, root: 'TreeNode') -> 'TreeNode': 21 self.inOrder(root) 22 if len(self.l) == 1: 23 return root 24 return self.bst(self.l)
算法思路:平衡二叉树构建。
1.使用中序遍历,记录原树的递增数组。
2.使用递增数组,通过递归构建平衡二叉树。