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