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.使用递增数组,通过递归构建平衡二叉树。

posted on 2020-03-26 10:30  Sempron2800+  阅读(152)  评论(0编辑  收藏  举报