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. 非二叉樹