Skip to content

Commit 410b6d0

Browse files
committed
2025-01-13 v. 7.9.5: added "919. Complete Binary Tree Inserter"
1 parent cafc61b commit 410b6d0

File tree

4 files changed

+79
-1
lines changed

4 files changed

+79
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
640640
| 910. Smallest Range II | [Link](https://leetcode.com/problems/smallest-range-ii/) | [Link](./lib/medium/910_smallest_range_ii.rb) | [Link](./test/medium/test_910_smallest_range_ii.rb) |
641641
| 912. Sort an Array | [Link](https://leetcode.com/problems/sort-an-array/) | [Link](./lib/medium/912_sort_an_array.rb) | [Link](./test/medium/test_912_sort_an_array.rb) |
642642
| 916. Word Subsets | [Link](https://leetcode.com/problems/word-subsets/) | [Link](./lib/medium/916_word_subsets.rb) | [Link](./test/medium/test_916_word_subsets.rb) |
643+
| 919. Complete Binary Tree Inserter | [Link](https://leetcode.com/problems/complete-binary-tree-inserter/) | [Link](./lib/medium/919_complete_binary_tree_inserter.rb) | [Link](./test/medium/test_919_complete_binary_tree_inserter.rb) |
643644
| 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) |
644645
| 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) |
645646
| 3223. Minimum Length of String After Operations | [Link](https://leetcode.com/problems/minimum-length-of-string-after-operations/) | [Link](./lib/medium/3223_minimum_length_of_string_after_operations.rb) | [Link](./test/medium/test_3223_minimum_length_of_string_after_operations.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 = '7.9.4'
8+
s.version = '7.9.5'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../common/binary_tree'
4+
5+
# https://leetcode.com/problems/complete-binary-tree-inserter/
6+
class CBTInserter
7+
# @param {TreeNode} root
8+
def initialize(root)
9+
@root = root
10+
@deq = []
11+
12+
que = [root]
13+
until que.empty?
14+
node = que.shift
15+
16+
@deq << node if !node.left || !node.right
17+
18+
que << node.left if node.left
19+
que << node.right if node.right
20+
end
21+
end
22+
23+
# @param {Integer} val
24+
# @return {Integer}
25+
def insert(val)
26+
node = @deq.first
27+
@deq << ::TreeNode.new(val)
28+
29+
if node.left
30+
node.right = @deq.last
31+
@deq.shift
32+
else
33+
node.left = @deq.last
34+
end
35+
36+
node.val
37+
end
38+
39+
# @return {TreeNode}
40+
def get_root = @root
41+
end
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/medium/919_complete_binary_tree_inserter'
6+
require 'minitest/autorun'
7+
8+
class CompleteBinaryTreeInserterTest < ::Minitest::Test
9+
def test_default_one
10+
cbt_inserter = ::CBTInserter.new(
11+
::TreeNode.new(
12+
1,
13+
::TreeNode.new(2),
14+
nil
15+
)
16+
)
17+
18+
assert_equal(1, cbt_inserter.insert(3))
19+
assert_equal(2, cbt_inserter.insert(4))
20+
21+
assert(
22+
::TreeNode.are_equals(
23+
::TreeNode.new(
24+
1,
25+
::TreeNode.new(
26+
2,
27+
::TreeNode.new(4),
28+
nil
29+
),
30+
::TreeNode.new(3)
31+
),
32+
cbt_inserter.get_root
33+
)
34+
)
35+
end
36+
end

0 commit comments

Comments
 (0)