Skip to content

Commit 0bd006b

Browse files
committed
feat(leetcode): add No.1382
1 parent 704078b commit 0bd006b

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// https://leetcode.com/problems/balance-a-binary-search-tree/
2+
// algorithms
3+
// Easy (74.31%)
4+
// Total Accepted: 5,928
5+
// Total Submissions: 7,977
6+
7+
8+
/**
9+
* Definition for a binary tree node. public class TreeNode { int val; TreeNode
10+
* left; TreeNode right; TreeNode(int x) { val = x; } }
11+
*/
12+
class Solution {
13+
public TreeNode balanceBST(TreeNode root) {
14+
ArrayList<TreeNode> l = new ArrayList<>();
15+
traversalTree(root, l);
16+
17+
return buildBalanceBST(l, 0, l.size() - 1);
18+
}
19+
20+
private void traversalTree(TreeNode root, ArrayList<TreeNode> l) {
21+
if (root == null) {
22+
return;
23+
}
24+
25+
traversalTree(root.left, l);
26+
l.add(root);
27+
traversalTree(root.right, l);
28+
}
29+
30+
private TreeNode buildBalanceBST(ArrayList<TreeNode> l, int left, int right) {
31+
if (right < left) {
32+
return null;
33+
}
34+
35+
int mid = left + (right - left) / 2;
36+
TreeNode root = l.get(mid);
37+
root.left = buildBalanceBST(l, left, mid - 1);
38+
root.right = buildBalanceBST(l, mid + 1, right);
39+
40+
return root;
41+
}
42+
43+
}

0 commit comments

Comments
 (0)