#!ruby
def tree_sub( data, cd, nst, str = '' )
cds = []
data.each_with_index{|n,idx|
cds << idx if n == cd
}
str2 = str + ( (cds.size > 1)? "│ " : " " )
cds.each_with_index{|x,idx|
print str, (cds.size - 1 <= idx)? "└" : "├", "─ #{x}\n"
tree_sub( data, x, nst + 1, str2 )
}
end
def tree( data )
cd = data.index( -1 )
puts cd
tree_sub( data, cd, 0 )
end
tree( [1, 2, -1, 0, 0, 1, 1, 2] )
puts
tree( [-1, 0, 1, 2, 3, 2] )
IyFydWJ5CgpkZWYgdHJlZV9zdWIoIGRhdGEsIGNkLCBuc3QsIHN0ciA9ICcnICkKCWNkcyA9IFtdCglkYXRhLmVhY2hfd2l0aF9pbmRleHt8bixpZHh8CgkJY2RzIDw8IGlkeAlpZiBuID09IGNkCgl9CglzdHIyID0gc3RyICsgKCAoY2RzLnNpemUgPiAxKT8gIuKUgiAiIDogIiAgIiApCgljZHMuZWFjaF93aXRoX2luZGV4e3x4LGlkeHwKCQlwcmludCBzdHIsIChjZHMuc2l6ZSAtIDEgPD0gaWR4KT8gIuKUlCIgOiAi4pScIiwgIuKUgCAje3h9XG4iCgkJdHJlZV9zdWIoIGRhdGEsIHgsIG5zdCArIDEsIHN0cjIgKQoJfQplbmQKCmRlZiB0cmVlKCBkYXRhICkKCWNkID0gZGF0YS5pbmRleCggLTEgKQoJcHV0cyBjZAoJdHJlZV9zdWIoIGRhdGEsIGNkLCAwICkKZW5kCgoKCXRyZWUoIFsxLCAyLCAtMSwgMCwgMCwgMSwgMSwgMl0gKQoJcHV0cwoJdHJlZSggWy0xLCAwLCAxLCAyLCAzLCAyXSApCgo=