Skip to content

Commit 98d979c

Browse files
authored
2024-12-16 v. 7.3.4: added "623. Add One Row to Tree"
2024-12-16 v. 7.3.4: added "623. Add One Row to Tree"
2 parents d62708e + c022849 commit 98d979c

File tree

4 files changed

+134
-1
lines changed

4 files changed

+134
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,3 +598,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
598598
| 609. Find Duplicate File in System | [Link](https://leetcode.com/problems/find-duplicate-file-in-system/) | [Link](./lib/medium/609_find_duplicate_file_in_system.rb) | [Link](./test/medium/test_609_find_duplicate_file_in_system.rb) |
599599
| 621. Task Scheduler | [Link](https://leetcode.com/problems/task-scheduler/) | [Link](./lib/medium/621_task_scheduler.rb) | [Link](./test/medium/test_621_task_scheduler.rb) |
600600
| 622. Design Circular Queue | [Link](https://leetcode.com/problems/design-circular-queue/) | [Link](./lib/medium/622_design_circular_queue.rb) | [Link](./test/medium/test_622_design_circular_queue.rb) |
601+
| 623. Add One Row to Tree | [Link](https://leetcode.com/problems/add-one-row-to-tree/) | [Link](./lib/medium/623_add_one_row_to_tree.rb) | [Link](./test/medium/test_623_add_one_row_to_tree.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.3.3'
8+
s.version = '7.3.4'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../common/binary_tree'
4+
5+
# https://leetcode.com/problems/add-one-row-to-tree/
6+
# @param {TreeNode} root
7+
# @param {Integer} val
8+
# @param {Integer} depth
9+
# @return {TreeNode}
10+
def add_one_row(root, val, depth)
11+
return ::TreeNode.new(val, root, nil) if depth == 1
12+
13+
level = 1
14+
nodes = [root]
15+
until nodes.empty?
16+
size = nodes.size
17+
18+
if (level + 1) == depth
19+
until size.zero?
20+
node = nodes.delete_at(0)
21+
left = node.left
22+
right = node.right
23+
node.left = ::TreeNode.new(val, left, nil)
24+
node.right = ::TreeNode.new(val, nil, right)
25+
26+
size -= 1
27+
end
28+
else
29+
until size.zero?
30+
node = nodes.delete_at(0)
31+
nodes << node.left if node.left
32+
nodes << node.right if node.right
33+
34+
size -= 1
35+
end
36+
end
37+
38+
level += 1
39+
end
40+
41+
root
42+
end
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/medium/623_add_one_row_to_tree'
6+
require 'minitest/autorun'
7+
8+
class AddOneRowToTreeTest < ::Minitest::Test
9+
def test_default_one
10+
assert(
11+
::TreeNode.are_equals(
12+
::TreeNode.new(
13+
4,
14+
::TreeNode.new(
15+
1,
16+
::TreeNode.new(
17+
2,
18+
::TreeNode.new(3),
19+
::TreeNode.new(1)
20+
),
21+
nil
22+
),
23+
::TreeNode.new(
24+
1,
25+
nil,
26+
::TreeNode.new(
27+
6,
28+
::TreeNode.new(5),
29+
nil
30+
)
31+
)
32+
),
33+
add_one_row(
34+
::TreeNode.new(
35+
4,
36+
::TreeNode.new(
37+
2,
38+
::TreeNode.new(3),
39+
::TreeNode.new(1)
40+
),
41+
::TreeNode.new(
42+
6,
43+
::TreeNode.new(5),
44+
nil
45+
)
46+
),
47+
1,
48+
2
49+
)
50+
)
51+
)
52+
end
53+
54+
def test_default_two
55+
assert(
56+
::TreeNode.are_equals(
57+
::TreeNode.new(
58+
4,
59+
::TreeNode.new(
60+
2,
61+
::TreeNode.new(
62+
1,
63+
::TreeNode.new(3),
64+
nil
65+
),
66+
::TreeNode.new(
67+
1,
68+
nil,
69+
::TreeNode.new(1)
70+
)
71+
),
72+
nil
73+
),
74+
add_one_row(
75+
::TreeNode.new(
76+
4,
77+
::TreeNode.new(
78+
2,
79+
::TreeNode.new(3),
80+
::TreeNode.new(1)
81+
),
82+
nil
83+
),
84+
1,
85+
3
86+
)
87+
)
88+
)
89+
end
90+
end

0 commit comments

Comments
 (0)