Skip to content

Commit f4210b8

Browse files
committed
2023-02-14 update: added "110. Balanced Binary Tree"
1 parent 60b87f8 commit f4210b8

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
3434
| 101. Symmetric Tree | [Link](https://leetcode.com/problems/symmetric-tree/) | [Link](./lib/easy/symmetric_tree.dart) |
3535
| 104. Maximum Depth of Binary Tree | [Link](https://leetcode.com/problems/maximum-depth-of-binary-tree/description/) | [Link](./lib/easy/maximum_depth_of_binary_tree.dart) |
3636
| 108. Convert Sorted Array to Binary Search Tree | [Link](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/) | [Link](./lib/easy/convert_sorted_array_to_binary_search_tree.dart) |
37+
| 110. Balanced Binary Tree | [Link](https://leetcode.com/problems/balanced-binary-tree/) | [Link](./lib/easy/balanced_binary_tree.dart) |

lib/easy/balanced_binary_tree.dart

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import 'dart:math';
2+
3+
import '../common/tree_node.dart';
4+
5+
// https://leetcode.com/problems/balanced-binary-tree/
6+
class Solution {
7+
bool isBalanced(TreeNode? root) {
8+
if (root != null) {
9+
var l = _maxHeight(root.left);
10+
var r = _maxHeight(root.right);
11+
return (l - r).abs() < 2 &&
12+
isBalanced(root.left) &&
13+
isBalanced(root.right);
14+
}
15+
return true;
16+
}
17+
18+
int _maxHeight(TreeNode? node) {
19+
if (node != null) {
20+
return 1 +
21+
max(
22+
_maxHeight(node.left),
23+
_maxHeight(node.right),
24+
);
25+
}
26+
return 0;
27+
}
28+
}
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import 'package:leetcode_dart/common/tree_node.dart';
2+
import 'package:leetcode_dart/easy/balanced_binary_tree.dart';
3+
import 'package:test/test.dart';
4+
5+
void main() {
6+
group(
7+
'Example tests',
8+
() {
9+
final bbt = Solution();
10+
test(
11+
'true',
12+
() => expect(
13+
true,
14+
bbt.isBalanced(
15+
TreeNode(
16+
3,
17+
TreeNode(9),
18+
TreeNode(
19+
20,
20+
TreeNode(15),
21+
TreeNode(7),
22+
),
23+
),
24+
),
25+
),
26+
);
27+
test(
28+
'false',
29+
() => expect(
30+
false,
31+
bbt.isBalanced(
32+
TreeNode(
33+
1,
34+
TreeNode(
35+
2,
36+
TreeNode(
37+
3,
38+
TreeNode(4),
39+
TreeNode(4),
40+
),
41+
TreeNode(3),
42+
),
43+
TreeNode(2),
44+
),
45+
),
46+
),
47+
);
48+
},
49+
);
50+
}

0 commit comments

Comments
 (0)