M
Martin
Hi all!
I'm a newbie in Ruby and I am trying to implement a Binary Tree.
However, it doesn't work. Could someone please help me?
Thank you !
class Node
attr_accessor :left, :right, :key, :data
def initialize(key, data)
@left = nil
@right = nil
@key = key
@data = data
end
def to_s()
print "Key = ", @key, " Data = ", @data
end
end
class Tree
attr_accessor :root
public
def initialize()
@root = nil
print "Root Object Id ", @root.object_id, "\n"
end
def insert(newNode)
insertNode(@root, newNode)
end
def visit()
visitNode(@root)
end
private
def insertNode(node, newNode)
print "Node Object Id ", node.object_id, "\n"
print "New Node Object Id ", newNode.object_id, "\n"
if (node == nil)
node = newNode
print "Node Affected Object Id ", node.object_id, "\n"
print @root
print node
else
if (newNode.data <= node.data)
insertNode(node.left, newNode)
print "Gauche"
else
insertNode(node.right, newNode)
print "Droite"
end
end
end
def visitNode(node)
if (node != nil)
print node.key
if (node.left != nil)
visitNode(node.left)
end
if (node.right != nil)
visitNode(node.right )
end
end
end
end
arbre = Tree.new
arbre.insert(Node.new(1, "un"))
arbre.insert(Node.new(2, "deux"))
arbre.insert(Node.new(3, "trois"))
arbre.visit()
I'm a newbie in Ruby and I am trying to implement a Binary Tree.
However, it doesn't work. Could someone please help me?
Thank you !
class Node
attr_accessor :left, :right, :key, :data
def initialize(key, data)
@left = nil
@right = nil
@key = key
@data = data
end
def to_s()
print "Key = ", @key, " Data = ", @data
end
end
class Tree
attr_accessor :root
public
def initialize()
@root = nil
print "Root Object Id ", @root.object_id, "\n"
end
def insert(newNode)
insertNode(@root, newNode)
end
def visit()
visitNode(@root)
end
private
def insertNode(node, newNode)
print "Node Object Id ", node.object_id, "\n"
print "New Node Object Id ", newNode.object_id, "\n"
if (node == nil)
node = newNode
print "Node Affected Object Id ", node.object_id, "\n"
print @root
print node
else
if (newNode.data <= node.data)
insertNode(node.left, newNode)
print "Gauche"
else
insertNode(node.right, newNode)
print "Droite"
end
end
end
def visitNode(node)
if (node != nil)
print node.key
if (node.left != nil)
visitNode(node.left)
end
if (node.right != nil)
visitNode(node.right )
end
end
end
end
arbre = Tree.new
arbre.insert(Node.new(1, "un"))
arbre.insert(Node.new(2, "deux"))
arbre.insert(Node.new(3, "trois"))
arbre.visit()