Skip to content

Commit 07302b5

Browse files
authored
2025-02-05 v. 8.4.2: added "1305. All Elements in Two Binary Search Trees"
2 parents 6825c56 + 8cef10b commit 07302b5

File tree

4 files changed

+117
-1
lines changed

4 files changed

+117
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
674674
| 1261. Find Elements in a Contaminated Binary Tree | [Link](https://leetcode.com/problems/find-elements-in-a-contaminated-binary-tree/) | [Link](./lib/medium/1261_find_elements_in_a_contaminated_binary_tree.rb) | [Link](./test/medium/test_1261_find_elements_in_a_contaminated_binary_tree.rb) |
675675
| 1288. Remove Covered Intervals | [Link](https://leetcode.com/problems/remove-covered-intervals/) | [Link](./lib/medium/1288_remove_covered_intervals.rb) | [Link](./test/medium/test_1288_remove_covered_intervals.rb) |
676676
| 1302. Deepest Leaves Sum | [Link](https://leetcode.com/problems/deepest-leaves-sum/) | [Link](./lib/medium/1302_deepest_leaves_sum.rb) | [Link](./test/medium/test_1302_deepest_leaves_sum.rb) |
677+
| 1305. All Elements in Two Binary Search Trees | [Link](https://leetcode.com/problems/all-elements-in-two-binary-search-trees/) | [Link](./lib/medium/1305_all_elements_in_two_binary_search_trees.rb) | [Link](./test/medium/test_1305_all_elements_in_two_binary_search_trees.rb) |
677678
| 1400. Construct K Palindrome Strings | [Link](https://leetcode.com/problems/construct-k-palindrome-strings/) | [Link](./lib/medium/1400_construct_k_palindrome_strings.rb) | [Link](./test/medium/test_1400_construct_k_palindrome_strings.rb) |
678679
| 2116. Check if a Parentheses String Can Be Valid | [Link](https://leetcode.com/problems/check-if-a-parentheses-string-can-be-valid/) | [Link](./lib/medium/2116_check_if_a_parentheses_string_can_be_valid.rb) | [Link](./test/medium/test_2116_check_if_a_parentheses_string_can_be_valid.rb) |
679680
| 2425. Bitwise XOR of All Pairings | [Link](https://leetcode.com/problems/bitwise-xor-of-all-pairings/) | [Link](./lib/medium/2425_bitwise_xor_of_all_pairings.rb) | [Link](./test/medium/test_2425_bitwise_xor_of_all_pairings.rb) |

leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '8.4.1'
8+
s.version = '8.4.2'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/all-elements-in-two-binary-search-trees/
4+
# @param {TreeNode} root1
5+
# @param {TreeNode} root2
6+
# @return {Integer[]}
7+
def get_all_elements(root1, root2)
8+
first = []
9+
traverse_for_get_all_elements(root1, first)
10+
11+
second = []
12+
traverse_for_get_all_elements(root2, second)
13+
14+
merge_for_get_all_elements(first, second)
15+
end
16+
17+
private
18+
19+
# @param {TreeNode} node
20+
# @param {Integer[]} values
21+
# @return {Integer[]}
22+
def traverse_for_get_all_elements(node, values)
23+
return unless node
24+
25+
traverse_for_get_all_elements(node.left, values)
26+
values << node.val
27+
traverse_for_get_all_elements(node.right, values)
28+
end
29+
30+
# @param {Integer[]} first
31+
# @param {Integer[]} second
32+
# @return {Integer[]}
33+
def merge_for_get_all_elements(first, second)
34+
result = []
35+
36+
i = 0
37+
j = 0
38+
39+
while i < first.size || j < second.size
40+
if i >= first.size
41+
result.concat(second[j..])
42+
43+
break
44+
elsif j >= second.size
45+
result.concat(first[i..])
46+
47+
break
48+
end
49+
50+
a = first[i]
51+
b = second[j]
52+
53+
if a < b
54+
result << a
55+
56+
i += 1
57+
else
58+
result << b
59+
60+
j += 1
61+
end
62+
end
63+
64+
result
65+
end
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/medium/1305_all_elements_in_two_binary_search_trees'
6+
require 'minitest/autorun'
7+
8+
class AllElementsInTwoBinarySearchTreesTest < ::Minitest::Test
9+
def test_default_one
10+
assert_equal(
11+
[0, 1, 1, 2, 3, 4],
12+
get_all_elements(
13+
::TreeNode.build_tree(
14+
[2, 1, 4]
15+
),
16+
::TreeNode.build_tree(
17+
[1, 0, 3]
18+
)
19+
)
20+
)
21+
end
22+
23+
def test_default_two
24+
assert_equal(
25+
[1, 1, 8, 8],
26+
get_all_elements(
27+
::TreeNode.build_tree(
28+
[1, nil, 8]
29+
),
30+
::TreeNode.build_tree(
31+
[8, 1]
32+
)
33+
)
34+
)
35+
end
36+
37+
def test_additional_one
38+
assert_equal(
39+
[0, 1, 2, 5, 7],
40+
get_all_elements(
41+
::TreeNode.build_tree(
42+
[]
43+
),
44+
::TreeNode.build_tree(
45+
[5, 1, 7, 0, 2]
46+
)
47+
)
48+
)
49+
end
50+
end

0 commit comments

Comments
 (0)