Rubyでバイナリ検索ツリーコードを書きました。私は今、なぜこのコードがのself.left = Node.new(3)
に新しいノードを作る必要があるのだろうと思っています。Ruby BST:なぜこのコードは新しいノードを作るために「自己」を必要としますか?
left = Node.new(3)
のように自分自身が削除できると思っていました。この場合、受信者は明らかです(insert_leftメソッドが適用されたインスタンス)。しかし、それは間違っているようです。私の考えが間違っている理由を助けてくれますか?
module BinaryTree
class Node
attr_accessor :value, :left, :right
def initialize(value)
@value = value
end
def insert(v)
case @value <=> v
when 1 then insert_left(v)
when -1 then insert_right(v)
when 0 then nil
end
end
private
def insert_left(v)
if left
left.insert(v)
else
self.left = Node.new(v)
end
end
def insert_right(v)
if right
right.insert(v)
else
self.right = Node.new(v)
end
end
end
end
ありがとう、私は変数の代入を呼び出しメソッドと混同しました。 – Ezerk