Учитывая два дерева, я хочу вернуть true, если они равны по структуре и значению, и false в противном случае.
Учитывая следующий класс:
class TreeNode
attr_accessor :val, :left, :right
def initialize val, left = nil, right = nil
@val = val
@left = left
@right = right
end
end
завершить функцию
def binary_tree_compare(a, b)
Мои исследования привели меня к здесь. Я пробовал рубиновое решение, но безрезультатно. Ниже приведен код, который я пробовал до сих пор:
def binary_tree_compare a, b
for_check << [a, b]
while a,b = for_check.shift
return false unless a.children.count == b.children.count
break if a.children.empty?
a_children = a.children.sort
b_children = b.children.sort
return false unless a_children == b_children
0.upto(a_children.count - 1) do |i|
for_check << [a_children[i], b_children[i]]
end
end
return true
end
Я ожидаю, что вывод будет истинным, если TreeNodes a и b равны по структуре и значению, и ложным в противном случае.
Я получаю синтаксическую ошибку, и это трассировка стека:
solution.rb:4: syntax error, unexpected ',', expecting keyword_do_cond or ';' or '\n'
while a,b = for_check.shift
^
solution.rb:12: syntax error, unexpected keyword_do_cond, expecting keyword_end
...0.upto(a_children.count - 1) do |i|
... ^~
olution.rb:15: syntax error, unexpected keyword_end, expecting end-of-input
end
^~~ ```