LeetCode 1382. Balance a Binary Search Tree - Easy Solution | Go
Link đđģ 1382. Balance a Binary Search Tree
Description
Given the root
of a binary search tree, return a balanced binary search tree with the same node values. If there is more than one answer, return any of them.
A binary search tree is balanced if the depth of the two subtrees of every node never differs by more than 1
.
Example 1:
- Input:
root = [1,null,2,null,3,null,4,null,null]
- Output:
[2,1,3,null,null,null,4]
Explanation: This is not the only correct answer, [3,1,4,null,2] is also correct.
Example 2:
- Input:
root = [2,1,3]
- Output:
[2,1,3]
Constraints:
- The number of nodes in the tree is in the range
[1, 104]
. 1 <= Node.val <= 105
Intuition
With Depth-First Search (DFS), we can traverse a tree and store its nodes in an array. Once we have this array, we can construct a new tree using in-order
traversal. This is done by dividing the array in half and recursively building the left and right subtrees from the respective halves.
Note
How to implement slicing in Go? Golang slice append å¯ĻäŊį´°į¯
1 | var nums []int |
Approach
- Traverse the tree using Depth-First Search (DFS) and store the nodes in an array.
- Construct a new tree using the array from step 1.
- Recursively build the left and right subtrees from the respective halves of the array.
- Return the root of the new tree.
Complexity
- Time complexity:
- Space complexity:
Code
1 | /** |
Recommendation
Comments