Skip to content

Commit 7a81434

Browse files
authored
Merge pull request #707 from fartem/117_Populating_Next_Right_Pointers_in_Each_Node_II
2024-08-12 v. 6.4.5: added "117. Populating Next Right Pointers in Each Node II"
2 parents 97507cf + 901bf8c commit 7a81434

File tree

4 files changed

+93
-1
lines changed

4 files changed

+93
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,3 +510,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
510510
| 113. Path Sum II | [Link](https://leetcode.com/problems/path-sum-ii/) | [Link](./lib/medium/113_path_sum_ii.rb) |
511511
| 114. Flatten Binary Tree to Linked List | [Link](https://leetcode.com/problems/flatten-binary-tree-to-linked-list/) | [Link](./lib/medium/114_flatten_binary_tree_to_linked_list.rb) |
512512
| 116. Populating Next Right Pointers in Each Node | [Link](https://leetcode.com/problems/populating-next-right-pointers-in-each-node/) | [Link](./lib/medium/116_populating_next_right_pointers_in_each_node.rb) |
513+
| 117. Populating Next Right Pointers in Each Node II | [Link](https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/) | [Link](./lib/medium/117_populating_next_right_pointers_in_each_node_ii.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 = '6.4.4'
8+
s.version = '6.4.5'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/
4+
# @param {Node} root
5+
# @return {Node}
6+
def connect117(root)
7+
return unless root
8+
9+
nodes = [root]
10+
until nodes.empty?
11+
size = nodes.size
12+
level = []
13+
until size.zero?
14+
node = nodes.shift
15+
if node.left
16+
level << node.left
17+
nodes << node.left
18+
end
19+
if node.right
20+
level << node.right
21+
nodes << node.right
22+
end
23+
24+
size -= 1
25+
end
26+
27+
(0...(level.size - 1)).each do |i|
28+
level[i].next = level[i + 1]
29+
end
30+
end
31+
32+
root
33+
end
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/next_tree_node'
5+
require_relative '../../lib/medium/117_populating_next_right_pointers_in_each_node_ii'
6+
require 'minitest/autorun'
7+
8+
class PopulatingNextRightPointersInEachNodeIITest < ::Minitest::Test
9+
def test_default
10+
ntn3 = ::NextTreeNode.new(3)
11+
ntn5 = ::NextTreeNode.new(5)
12+
ntn7 = ::NextTreeNode.new(7)
13+
ntn3.right = ntn7
14+
ntn5.next = ntn7
15+
16+
assert(
17+
::NextTreeNode.are_equals(
18+
::NextTreeNode.new(
19+
1,
20+
::NextTreeNode.new(
21+
2,
22+
::NextTreeNode.new(
23+
4,
24+
nil,
25+
nil,
26+
ntn5
27+
),
28+
ntn5,
29+
ntn3
30+
),
31+
ntn3
32+
),
33+
connect117(
34+
::NextTreeNode.new(
35+
1,
36+
::NextTreeNode.new(
37+
2,
38+
::NextTreeNode.new(4),
39+
::NextTreeNode.new(5)
40+
),
41+
::NextTreeNode.new(
42+
3,
43+
nil,
44+
::NextTreeNode.new(7)
45+
)
46+
)
47+
)
48+
)
49+
)
50+
51+
assert(
52+
::NextTreeNode.are_equals(
53+
nil,
54+
connect117(nil)
55+
)
56+
)
57+
end
58+
end

0 commit comments

Comments
 (0)