我很难找出我的逻辑缺陷。
3
是 的父级4
并且8
是 的父级3
。我想9
指出它的根4
是8
.
这是我的 Ruby 课程:
class QuickUnion
def initialize(n)
@id = Array.new(n) {|i| i}
end
def root(i)
while i != @id[i] do
i = @id[i]
end
i
end
def connected?(p, q)
root(p) == root(q)
end
def union(p, q)
@id[p] = @id[q]
end
def print_union
puts "#{@id}"
end
end
这是测试文件:
qu = QuickUnion.new(10)
qu.print_union
qu.union(4,3)
qu.print_union
qu.union(3,8)
qu.print_union
qu.union(6,5)
qu.print_union
qu.union(9,4)
qu.print_union
这是输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 3, 5, 6, 7, 8, 9]
[0, 1, 2, 8, 3, 5, 6, 7, 8, 9]
[0, 1, 2, 8, 3, 5, 5, 7, 8, 9]
[0, 1, 2, 8, 3, 5, 5, 7, 8, 3]
最后一个数组的输出应该是:
[0, 1, 2, 8, 3, 5, 5, 7, 8, 8]
任何帮助表示赞赏。