Files
hello-algo/ru/codes/ruby/chapter_tree/binary_tree_bfs.rb
Yudong Jin 772183705e Add ru version (#1865)
* Add Russian docs site baseline

* Add Russian localized codebase

* Polish Russian code wording

* Update ru code translation.

* Update code translation and chapter covers.

* Fix pythontutor extraction.

* Add README and landing page.

* placeholder of profiles

* Use figures of English version

* Remove chapter paperbook
2026-03-28 04:24:07 +08:00

37 lines
1.4 KiB
Ruby

=begin
File: binary_tree_bfs.rb
Created Time: 2024-04-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
require_relative '../utils/tree_node'
require_relative '../utils/print_util'
# ## Обход в ширину ###
def level_order(root)
# Инициализировать очередь и добавить корневой узел
queue = [root]
# Инициализировать список для хранения последовательности обхода
res = []
while !queue.empty?
node = queue.shift # Извлечение из очереди
res << node.val # Сохранить значение узла
queue << node.left unless node.left.nil? # Поместить левый дочерний узел в очередь
queue << node.right unless node.right.nil? # Поместить правый дочерний узел в очередь
end
res
end
### Driver Code ###
if __FILE__ == $0
# Инициализировать двоичное дерево
# Здесь используется функция, напрямую строящая двоичное дерево из массива
root = arr_to_tree([1, 2, 3, 4, 5, 6, 7])
puts "\nИнициализация двоичного дерева\n\n"
print_tree(root)
# Обход в ширину
res = level_order(root)
puts "\nПоследовательность печати узлов при обходе в ширину = #{res}"
end