Class | AdderTreeNode |
In: |
lib/javaclass/adder_tree.rb
|
Parent: | Object |
A node in the AdderTree.
Author: | Peter Kofler |
data | [R] | |
parent | [R] |
# File lib/javaclass/adder_tree.rb, line 8 def initialize(data, parent) @data = data @parent = parent @children = [] end
# File lib/javaclass/adder_tree.rb, line 18 def add(o) node = AdderTreeNode.new(o, self) @children << node node end
# File lib/javaclass/adder_tree.rb, line 24 def contain?(o) if @data == o self else @children.find { |child| child.contain?(o) } end end
# File lib/javaclass/adder_tree.rb, line 45 def levels ( [1] + @children.map { |child| 1 + child.levels } ).max end
Return the number of nodes this this (sub-)tree.
# File lib/javaclass/adder_tree.rb, line 41 def size @children.inject(1) { |sum, child| sum + child.size } end
Return an array of all children. Each child has its own array. For example
tree = AdderTree.new(0) tree.add(1) tree.to_a # => [0, [1]]
# File lib/javaclass/adder_tree.rb, line 53 def to_a if @children.size > 0 sublist = [] @children.each { |child| child.to_a.each { |c| sublist << c } } [data, sublist] else [data] end end