Q
做一个N叉树
3
A
回答
11
为了扩大对奥托的回答,得到一个哈希以一个简单的方法自动vivify阵列是使用默认值块与Hash::new
,就像这样:
node_children = Hash.new { |_node_children, node_key| _node_children[node_key] = [] }
但实际上,该代码取决于什么你想用你的数组。您可以 设置它们与散列和数组,或做一些类:
class Node
attr_accessor :value, :children
def initialize(value, children=[])
@value = value
@children = children
end
def to_s(indent=0)
value_s = @value.to_s
sub_indent = indent + value_s.length
value_s + @children.map { |child| " - " + child.to_s(sub_indent + 3) }.join("\n" + ' ' * sub_indent)
end
end
ROOT = Node.new('root', %w{ farleft left center right farright }.map { |str| Node.new(str) })
puts "Original Tree"
puts ROOT
puts
ROOT.children.each do |node|
node.children = %w{ one two three four }.map { |str| Node.new(node.value + ':' + str) }
end
puts "New Tree"
puts ROOT
puts
此代码,例如,给出了:
Original Tree
root - farleft
- left
- center
- right
- farright
New Tree
root - farleft - farleft:one
- farleft:two
- farleft:three
- farleft:four
- left - left:one
- left:two
- left:three
- left:four
- center - center:one
- center:two
- center:three
- center:four
- right - right:one
- right:two
- right:three
- right:four
- farright - farright:one
- farright:two
- farright:three
- farright:four
5
A散列其属性都是阵列?
2
的RubyTree宝石为我工作的伟大。
相关问题
- 1. Deserilizing N叉树
- 2. 如何遍历一个N叉树
- 3. 搜索在N叉树
- 4. 从树(n-ary)创建二叉树
- 5. Python的 - 压扁它有N个儿童(N叉树)
- 6. 二叉树 - 哪一种二叉树
- 7. 随机选择从N叉树
- 8. O(log n)中的二叉搜索树?
- 9. 你怎么做一个八叉树(对于体素)?
- 10. 如何做二叉树的尾递归?
- 11. 二叉树O(n)的InOrder树遍历的时间复杂度?
- 12. 如何找到非二叉树中的第n个节点?
- 13. 从Haskell中的二叉树中获取第N个元素
- 14. 将n个数字插入二叉搜索树的复杂性
- 15. 查找给定n个键的二叉树数量的变化
- 16. 在一个完整的满二叉树
- 17. 探索一个二叉搜索树
- 18. 插入一个列表,二叉树
- 19. 遍历一个无序的二叉树
- 20. 错误插入一个点四叉树
- 21. 寻找一个.NET二叉树
- 22. 功能把一个GenTree到二叉树
- 23. 二叉树到二叉搜索树(BST)
- 24. 一般二叉树的Java
- 25. 二叉树第一不全
- 26. 比较两个二叉树
- 27. 二叉搜索树 - 复制一棵树到另一棵树
- 28. N个节点的二叉树形状的数量是否与高度N-1一样?
- 29. Python二叉树
- 30. 非二叉树