添加1382.将二叉搜索树变平衡python3代码

This commit is contained in:
ironartisan
2021-08-11 22:24:28 +08:00
parent b02e144d7a
commit db18da9914

View File

@ -55,7 +55,7 @@ private:
vec.push_back(cur->val); vec.push_back(cur->val);
traversal(cur->right); traversal(cur->right);
} }
有序数组转平衡二叉树 // 有序数组转平衡二叉树
TreeNode* getTree(vector<int>& nums, int left, int right) { TreeNode* getTree(vector<int>& nums, int left, int right) {
if (left > right) return nullptr; if (left > right) return nullptr;
int mid = left + ((right - left) / 2); int mid = left + ((right - left) / 2);
@ -78,7 +78,27 @@ public:
Java Java
Python Python
```python
class Solution:
def balanceBST(self, root: TreeNode) -> TreeNode:
res = []
# 有序树转成有序数组
def traversal(cur: TreeNode):
if not cur: return
traversal(cur.left)
res.append(cur.val)
traversal(cur.right)
# 有序数组转成平衡二叉树
def getTree(nums: List, left, right):
if left > right: return
mid = left + (right -left) // 2
root = TreeNode(nums[mid])
root.left = getTree(nums, left, mid - 1)
root.right = getTree(nums, mid + 1, right)
return root
traversal(root)
return getTree(res, 0, len(res) - 1)
```
Go Go
JavaScript JavaScript