hash = {
"d" => {
"o" => {
"g" => {
"s" => {}
},
"l" => {
"l" => {}
},
"o" => {
"m" => {}
}
}
},
"b" => {
"o"=>{
"o"=>{
"m"=>{}
}
}
}
}
trie.print(hash)
內特里類有方法稱爲print
打印trie
取鑰匙:如何內哈希對象
def print(trie)
trie.each do |k,v|
@res.concat(k)
print(trie[k]) if trie[k].length > 0
unless trie[k].length > 0
@result << @res unless trie[k].length > 0
@res = ""
p @result
end
end
end
上述方法打印:
["dogs", "ll", "om", "boom"]
但我要打印:
["dogs" , "doll", "doom" , "boom"]
謝謝,它按照通緝的方式工作。做了小改動。 res = compose(v,前綴+ k) @ result << res除非trie [k] .length!= 0 – 2014-12-07 14:26:54
@HariKrishnan不是這個函數已經用'empty?'來做這個了嗎 – 2014-12-07 14:34:08
不,空字符串也包含在結果。 @ D方,然後我做了這個以避免空。 – 2014-12-07 14:56:32