F
frank
Hi,
I have been using ruby for a few months now and am writing a program
that duplicates portions of a tree structure.
For example, take the following tree:
((A,B),C)
Where ( represents a node, each letter represents a leaf. I am
currently using a very clunky set of arrays to hold all the
information.
leaf = Array.new
node = Array.new
left = Array.new #represents the child to the left
right = Array.new #represents the child to the right
parent = Array.new
I number each element in the array based on moving up the tree and
reading either a left or right node or leaf.
left = i*2
right = i*2+1
thus node[2] represents the node subtending the edges leading to the
left child A and the right child B.
So to traverse this tree
( = node 1
( = move up a node to 2
A = move up to left leaf 4
, = move down to node 2
B = move up to the right leaf 5
) = move down to node 2
, = move down to node 1
C = move up to right child 3
) = move down to node 1 and end of tree
Using the above tree and information in the array elements, I want to
be able to duplicate portions of the tree, such that I could get
something like:
(((A,B),(A,B)), C)
So moving up from node 1 to node 2 I have a duplication in A and B. I
can indicate where I have duplications but ultimately need to write
this back out into the parenthetical notation that I am using to
describe a tree. I am afraid that I should be using struct or they may
be a better way to describe my tree structures rather than using
numbered and linked lists. Any information on using struct in ruby or
pointer equivalents would be appreciated. I am trying to come up with
a way of doing this such that I could use it on trees of any size.
Right now I am using arrays and the bookkeeping is getting tricky.
Thanks for any help!
frank
I have been using ruby for a few months now and am writing a program
that duplicates portions of a tree structure.
For example, take the following tree:
((A,B),C)
Where ( represents a node, each letter represents a leaf. I am
currently using a very clunky set of arrays to hold all the
information.
leaf = Array.new
node = Array.new
left = Array.new #represents the child to the left
right = Array.new #represents the child to the right
parent = Array.new
I number each element in the array based on moving up the tree and
reading either a left or right node or leaf.
left = i*2
right = i*2+1
thus node[2] represents the node subtending the edges leading to the
left child A and the right child B.
So to traverse this tree
( = node 1
( = move up a node to 2
A = move up to left leaf 4
, = move down to node 2
B = move up to the right leaf 5
) = move down to node 2
, = move down to node 1
C = move up to right child 3
) = move down to node 1 and end of tree
Using the above tree and information in the array elements, I want to
be able to duplicate portions of the tree, such that I could get
something like:
(((A,B),(A,B)), C)
So moving up from node 1 to node 2 I have a duplication in A and B. I
can indicate where I have duplications but ultimately need to write
this back out into the parenthetical notation that I am using to
describe a tree. I am afraid that I should be using struct or they may
be a better way to describe my tree structures rather than using
numbered and linked lists. Any information on using struct in ruby or
pointer equivalents would be appreciated. I am trying to come up with
a way of doing this such that I could use it on trees of any size.
Right now I am using arrays and the bookkeeping is getting tricky.
Thanks for any help!
frank