Skip to content

Commit 569d8fb

Browse files
committed
2023-02-13 update: added "108. Convert Sorted Array to Binary Search Tree"
1 parent 885f714 commit 569d8fb

File tree

4 files changed

+95
-23
lines changed

4 files changed

+95
-23
lines changed

README.md

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,25 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
1212

1313
### Easy
1414

15-
| Name | Link to LeetCode | Link to solution |
16-
|----------------------------------------|---------------------------------------------------------------------------------|------------------------------------------------------------|
17-
| 1. Two Sum | [Link](https://leetcode.com/problems/two-sum/) | [Link](./lib/easy/two_sum.dart) |
18-
| 9. Palindrome Number | [Link](https://leetcode.com/problems/palindrome-number/) | [Link](./lib/easy/palindrome_number.dart) |
19-
| 13. Roman to Integer | [Link](https://leetcode.com/problems/roman-to-integer/) | [Link](./lib/easy/roman_to_integer.dart) |
20-
| 14. Longest Common Prefix | [Link](https://leetcode.com/problems/longest-common-prefix/) | [Link](./lib/easy/longest_common_prefix.dart) |
21-
| 20. Valid Parentheses | [Link](https://leetcode.com/problems/valid-parentheses/) | [Link](./lib/easy/valid_parentheses.dart) |
22-
| 21. Merge Two Sorted Lists | [Link](https://leetcode.com/problems/merge-two-sorted-lists/) | [Link](./lib/easy/merge_two_sorted_lists.dart) |
23-
| 27. Remove Element | [Link](https://leetcode.com/problems/remove-element/) | [Link](./lib/easy/remove_element.dart) |
24-
| 35. Search Insert Position | [Link](https://leetcode.com/problems/search-insert-position/) | [Link](./lib/easy/search_insert_position.dart) |
25-
| 58. Length of Last Word | [Link](https://leetcode.com/problems/length-of-last-word/) | [Link](./lib/easy/length_of_last_word.dart) |
26-
| 66. Plus One | [Link](https://leetcode.com/problems/plus-one/) | [Link](./lib/easy/plus_one.dart) |
27-
| 67. Add Binary | [Link](https://leetcode.com/problems/add-binary/) | [Link](./lib/easy/add_binary.dart) |
28-
| 69. Sqrt(x) | [Link](https://leetcode.com/problems/sqrtx/) | [Link](./lib/easy/sqrt_x.dart) |
29-
| 70. Climbing Stairs | [Link](https://leetcode.com/problems/climbing-stairs/) | [Link](./lib/easy/climbing_stairs.dart) |
30-
| 83. Remove Duplicates from Sorted List | [Link](https://leetcode.com/problems/remove-duplicates-from-sorted-list/) | [Link](./lib/easy/remove_duplicates_from_sorted_list.dart) |
31-
| 88. Merge Sorted Array | [Link](https://leetcode.com/problems/merge-sorted-array/) | [Link](./lib/easy/merge_sorted_array.dart) |
32-
| 94. Binary Tree Inorder Traversal | [Link](https://leetcode.com/problems/binary-tree-inorder-traversal/) | [Link](./lib/easy/binary_tree_inorder_traversal.dart) |
33-
| 100. Same Tree | [Link](https://leetcode.com/problems/same-tree/) | [Link](./lib/easy/same_tree.dart) |
34-
| 101. Symmetric Tree | [Link](https://leetcode.com/problems/symmetric-tree/) | [Link](./lib/easy/symmetric_tree.dart) |
35-
| 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) |
15+
| Name | Link to LeetCode | Link to solution |
16+
|-------------------------------------------------|-----------------------------------------------------------------------------------|--------------------------------------------------------------------|
17+
| 1. Two Sum | [Link](https://leetcode.com/problems/two-sum/) | [Link](./lib/easy/two_sum.dart) |
18+
| 9. Palindrome Number | [Link](https://leetcode.com/problems/palindrome-number/) | [Link](./lib/easy/palindrome_number.dart) |
19+
| 13. Roman to Integer | [Link](https://leetcode.com/problems/roman-to-integer/) | [Link](./lib/easy/roman_to_integer.dart) |
20+
| 14. Longest Common Prefix | [Link](https://leetcode.com/problems/longest-common-prefix/) | [Link](./lib/easy/longest_common_prefix.dart) |
21+
| 20. Valid Parentheses | [Link](https://leetcode.com/problems/valid-parentheses/) | [Link](./lib/easy/valid_parentheses.dart) |
22+
| 21. Merge Two Sorted Lists | [Link](https://leetcode.com/problems/merge-two-sorted-lists/) | [Link](./lib/easy/merge_two_sorted_lists.dart) |
23+
| 27. Remove Element | [Link](https://leetcode.com/problems/remove-element/) | [Link](./lib/easy/remove_element.dart) |
24+
| 35. Search Insert Position | [Link](https://leetcode.com/problems/search-insert-position/) | [Link](./lib/easy/search_insert_position.dart) |
25+
| 58. Length of Last Word | [Link](https://leetcode.com/problems/length-of-last-word/) | [Link](./lib/easy/length_of_last_word.dart) |
26+
| 66. Plus One | [Link](https://leetcode.com/problems/plus-one/) | [Link](./lib/easy/plus_one.dart) |
27+
| 67. Add Binary | [Link](https://leetcode.com/problems/add-binary/) | [Link](./lib/easy/add_binary.dart) |
28+
| 69. Sqrt(x) | [Link](https://leetcode.com/problems/sqrtx/) | [Link](./lib/easy/sqrt_x.dart) |
29+
| 70. Climbing Stairs | [Link](https://leetcode.com/problems/climbing-stairs/) | [Link](./lib/easy/climbing_stairs.dart) |
30+
| 83. Remove Duplicates from Sorted List | [Link](https://leetcode.com/problems/remove-duplicates-from-sorted-list/) | [Link](./lib/easy/remove_duplicates_from_sorted_list.dart) |
31+
| 88. Merge Sorted Array | [Link](https://leetcode.com/problems/merge-sorted-array/) | [Link](./lib/easy/merge_sorted_array.dart) |
32+
| 94. Binary Tree Inorder Traversal | [Link](https://leetcode.com/problems/binary-tree-inorder-traversal/) | [Link](./lib/easy/binary_tree_inorder_traversal.dart) |
33+
| 100. Same Tree | [Link](https://leetcode.com/problems/same-tree/) | [Link](./lib/easy/same_tree.dart) |
34+
| 101. Symmetric Tree | [Link](https://leetcode.com/problems/symmetric-tree/) | [Link](./lib/easy/symmetric_tree.dart) |
35+
| 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) |
36+
| 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) |
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import '../common/tree_node.dart';
2+
3+
// https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
4+
class Solution {
5+
TreeNode? sortedArrayToBST(List<int> nums) {
6+
return _toBST(nums, 0, nums.length - 1);
7+
}
8+
9+
TreeNode? _toBST(List<int> nums, int start, int end) {
10+
if (start > end) {
11+
return null;
12+
}
13+
var middle = (start + end) ~/ 2;
14+
var node = TreeNode(nums[middle]);
15+
node.left = _toBST(nums, start, middle - 1);
16+
node.right = _toBST(nums, middle + 1, end);
17+
return node;
18+
}
19+
}

test/common/binary_tree_helper.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:leetcode_dart/common/tree_node.dart';
22

3-
class LinkedListHelper {
4-
LinkedListHelper._();
3+
class BinaryTreeHelper {
4+
BinaryTreeHelper._();
55

66
static bool areEqual(TreeNode? f, TreeNode? s) {
77
while (f != null && s != null) {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import 'package:leetcode_dart/common/tree_node.dart';
2+
import 'package:leetcode_dart/easy/convert_sorted_array_to_binary_search_tree.dart';
3+
import 'package:test/test.dart';
4+
5+
import '../common/binary_tree_helper.dart';
6+
7+
void main() {
8+
group(
9+
'Example tests',
10+
() {
11+
final csatbst = Solution();
12+
test(
13+
'[0, -10, 5, null, -3, null, 9]',
14+
() => expect(
15+
true,
16+
BinaryTreeHelper.areEqual(
17+
TreeNode(
18+
0,
19+
TreeNode(
20+
-10,
21+
null,
22+
TreeNode(-3),
23+
),
24+
TreeNode(
25+
5,
26+
null,
27+
TreeNode(9),
28+
),
29+
),
30+
csatbst.sortedArrayToBST(
31+
[-10, -3, 0, 5, 9],
32+
),
33+
),
34+
),
35+
);
36+
test(
37+
'3, null, 1',
38+
() => expect(
39+
true,
40+
BinaryTreeHelper.areEqual(
41+
TreeNode(
42+
3,
43+
null,
44+
TreeNode(1),
45+
),
46+
csatbst.sortedArrayToBST([3, 1]),
47+
),
48+
),
49+
);
50+
},
51+
);
52+
}

0 commit comments

Comments
 (0)