Loading...
zzeni avatar zzeni 0 Точки

[Practice] Уеб програмиране с Ruby on Rails - Binary Tree

Здравейте,

във връзка с предложението на @kaloyankostadinow в ето тази тема, реших да пусна една задачка за упражнение тук във форума, за да можете да си я решавате и дискутирате, без да ви се карам, че споделяте решението, а пък не е трябвало.

Ето я и самата задачка

Имплементирай клас BinaryTree, който има следните полета:

attr_reader :value
attr_accessor :left, :right

 

При инициализация приема или списък или хеш, по следният начин:

BinaryTree.new [1, [2, [4, 5]], [3, [nil, 6]]]

Което създава следното дърво: 

     1
   /   \
  2     3
 / \     \
4   5     6

или с хеш: 

BinaryTree.new {:value=>1, :left=>{:value=>2, :left=>{:value=>4}, :right=>{:value=>5}}, :right=>{:value=>3, :right=>{:value=>5}}}

(което ще създаде отново същото дърво)

 

Дървото ще има следните instance методи:

b = BinaryTree.new [1, [2, 3]]
b.to_s  # =>      1\n   /   \\\n  2     3
b.to_a  # => [1, [2, 3]]
b.to_h  # => {:value=>1, :left=>{:value=>2}, :right=>{:value=>3}}

Очаквам решенията ви тук (ако имате въпроси по условието - пак тук ;))

 

Поздрави!

 

0
Ruby Programming 07/11/2017 17:21:27
zzeni avatar zzeni 0 Точки

Пропуснах да кажа, че дървото се състои само от цели числа (за по-лесно)

Разбира се, можете да създавате дърво и с accessor методите за left и right. Ето така:

tree = BinaryTree.new(1)
tree.left = BinaryTree.new(2)
tree.right = BinaryTree.new(3)
tree.left.left = BinaryTree.new(4)
tree.left.right = BinaryTree.new(5)
tree.right.right = BinaryTree.new(6)

При това положение, добавям че ще можете да инициализирате и с integer стойност.

0
07/11/2017 17:21:56
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.