Files
hello-algo/ru/codes/ruby/chapter_tree/binary_tree_bfs.rb
Yudong Jin 7a78369e4c Migrate to Zensical (#1869)
* Fix Russian Ruby code extraction.

* Add zensical configs.
2026-03-29 05:41:25 +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