mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 11:34:46 +08:00
添加(1382. 将二叉搜索树变平衡)的go版本
This commit is contained in:
@ -123,6 +123,46 @@ class Solution:
|
||||
```
|
||||
Go:
|
||||
|
||||
```go
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* type TreeNode struct {
|
||||
* Val int
|
||||
* Left *TreeNode
|
||||
* Right *TreeNode
|
||||
* }
|
||||
*/
|
||||
func balanceBST(root *TreeNode) *TreeNode {
|
||||
// 二叉搜索树中序遍历得到有序数组
|
||||
nums := []int{}
|
||||
// 中序递归遍历二叉树
|
||||
var travel func(node *TreeNode)
|
||||
travel = func(node *TreeNode) {
|
||||
if node == nil {
|
||||
return
|
||||
}
|
||||
travel(node.Left)
|
||||
nums = append(nums, node.Val)
|
||||
travel(node.Right)
|
||||
}
|
||||
// 二分法保证左右子树高度差不超过一(题目要求返回的仍是二叉搜索树)
|
||||
var buildTree func(nums []int, left, right int) *TreeNode
|
||||
buildTree = func(nums []int, left, right int) *TreeNode {
|
||||
if left > right {
|
||||
return nil
|
||||
}
|
||||
mid := left + (right-left) >> 1
|
||||
root := &TreeNode{Val: nums[mid]}
|
||||
root.Left = buildTree(nums, left, mid-1)
|
||||
root.Right = buildTree(nums, mid+1, right)
|
||||
return root
|
||||
}
|
||||
travel(root)
|
||||
return buildTree(nums, 0, len(nums)-1)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
JavaScript:
|
||||
```javascript
|
||||
var balanceBST = function(root) {
|
||||
|
Reference in New Issue
Block a user