Skip to content

Commit 73f9145

Browse files
authored
2025-03-25 v. 9.1.1: added "2196. Create Binary Tree From Descriptions"
2 parents e7697a7 + 05b16da commit 73f9145

4 files changed

+74
-1
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
745745
| 2165. Smallest Value of the Rearranged Number | [Link](https://leetcode.com/problems/smallest-value-of-the-rearranged-number/) | [Link](./lib/medium/2165_smallest_value_of_the_rearranged_number.rb) | [Link](./test/medium/test_2165_smallest_value_of_the_rearranged_number.rb) |
746746
| 2177. Find Three Consecutive Integers That Sum to a Given Number | [Link](https://leetcode.com/problems/find-three-consecutive-integers-that-sum-to-a-given-number/) | [Link](./lib/medium/2177_find_three_consecutive_integers_that_sum_to_a_given_number.rb) | [Link](./test/medium/test_2177_find_three_consecutive_integers_that_sum_to_a_given_number.rb) |
747747
| 2181. Merge Nodes in Between Zeros | [Link](https://leetcode.com/problems/merge-nodes-in-between-zeros/) | [Link](./lib/medium/2181_merge_nodes_in_between_zeros.rb) | [Link](./test/medium/test_2181_merge_nodes_in_between_zeros.rb) |
748+
| 2196. Create Binary Tree From Descriptions | [Link](https://leetcode.com/problems/create-binary-tree-from-descriptions/) | [Link](./lib/medium/2196_create_binary_tree_from_descriptions.rb) | [Link](./test/medium/test_2196_create_binary_tree_from_descriptions.rb) |
748749
| 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) |
749750
| 2429. Minimize XOR | [Link](https://leetcode.com/problems/minimize-xor/) | [Link](./lib/medium/2429_minimize_xor.rb) | [Link](./test/medium/test_2429_minimize_xor.rb) |
750751
| 2657. Find the Prefix Common Array of Two Arrays | [Link](https://leetcode.com/problems/find-the-prefix-common-array-of-two-arrays/) | [Link](./lib/medium/2657_find_the_prefix_common_array_of_two_arrays.rb) | [Link](./test/medium/test_2657_find_the_prefix_common_array_of_two_arrays.rb) |

leetcode-ruby.gemspec

+1-1
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 = '9.1.0'
8+
s.version = '9.1.1'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../common/binary_tree'
4+
5+
# https://leetcode.com/problems/create-binary-tree-from-descriptions/
6+
# @param {Integer[][]} descriptions
7+
# @return {TreeNode}
8+
def create_binary_tree(descriptions)
9+
nodes = {}
10+
children = ::Set.new
11+
12+
descriptions.each do |parent_val, child_val, is_left|
13+
parent_node = nodes[parent_val] ||= ::TreeNode.new(parent_val)
14+
child_node = nodes[child_val] ||= ::TreeNode.new(child_val)
15+
16+
if is_left == 1
17+
parent_node.left = child_node
18+
else
19+
parent_node.right = child_node
20+
end
21+
22+
children.add(child_val)
23+
end
24+
25+
root_val = nodes.keys.find { |k| !children.include?(k) }
26+
27+
nodes[root_val]
28+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/medium/2196_create_binary_tree_from_descriptions'
6+
require 'minitest/autorun'
7+
8+
class CreateBinaryTreeFromDescriptionsTest < ::Minitest::Test
9+
def test_default_one
10+
assert(
11+
::TreeNode.are_equals(
12+
::TreeNode.build_tree(
13+
[50, 20, 80, 15, 17, 19]
14+
),
15+
create_binary_tree(
16+
[
17+
[20, 15, 1],
18+
[20, 17, 0],
19+
[50, 20, 1],
20+
[50, 80, 0],
21+
[80, 19, 1]
22+
]
23+
)
24+
)
25+
)
26+
end
27+
28+
def test_default_two
29+
assert(
30+
::TreeNode.are_equals(
31+
::TreeNode.build_tree(
32+
[1, 2, nil, nil, 3, 4]
33+
),
34+
create_binary_tree(
35+
[
36+
[1, 2, 1],
37+
[2, 3, 0],
38+
[3, 4, 1]
39+
]
40+
)
41+
)
42+
)
43+
end
44+
end

0 commit comments

Comments
 (0)