我有两个课程Leaf& BinaryNode Leaf包含一个字符串字段 BinaryNode包含两个子节点,它们都是Leaf或BinaryNode
我正在尝试编写一个concatAll方法,该方法将从左到右返回树中所有单词的字符串...
以下是我到目前为止所做的,但它只返回它找到的最后一个字符串而不是已构建的整个字符串...怎么来的?
def concatAll
final = ""
if @lchild.respond_to?('string')
final += @lchild.to_s
else
@lchild.concatAll unless @lchild.nil?
end
if @rchild.respond_to?('string')
final += @rchild.to_s
else
@rchild.concatAll unless @rchild.nil?
end
end
答案 0 :(得分:1)
方法的返回值是最后执行的表达式的值。如果没有明确的返回值,您只需找到最后一个字符串。
您只需在end
之前添加一行:
final
end
这将返回final
的值。
答案 1 :(得分:1)
我想出来,当它回到树上时,我需要在递归调用前面的最终+ =。
def concatAll
final = ""
if @lchild.respond_to?('string')
final += @lchild.to_s
else
final += @lchild.concatAll unless @lchild.nil?
end
if @rchild.respond_to?('string')
final += @rchild.to_s
else
final += @rchild.concatAll unless @rchild.nil?
end
final
end
特别感谢Mark Thomas