On Dec 2, 2007 11:47 PM, Devon McCormick <[EMAIL PROTECTED]> wrote: > However, upon reading the section in "A Programming Language" dealing with > trees, it looks as though trees are represented by using matrixes. A > directed > graph is shown represented as a boolean matrix with a one in the row and > column where node "row number" goes to node "column > number".
You can also represent a tree using flat lists -- with a list of integers representing structure (for each node, the index of the parent node, with some special value representing the root node) and a parallel list representing node data. Of course, these representations work best for operations performed on the tree as a whole, and work poorly for scalar operations on trees. But that tends to be true with J and APL overall. Put differently, if trees are being used to optimize scalar processing, you probably should not be trying to copy this approach in J -- you would do better working from first principles (perhaps using a small cache of recent changes represented against some larger archive structure, or perhaps doing something completely different...). However, I can also see trees represented in J using boxed lists. This could be a boxed structure of indices into some flat clump of data (which you would need to carefully manage so updates use special code). Or, for keyed trees, you might want to maintain a pair of parallel boxed lists (one of indices and the other of keys). In all cases you should have fairly shallow trees with fat nodes. And I think you would have to be using explicit coding for at least some critical operations. That said, I do not feel like coding up any examples at the moment, in part because this subject is so broad that specific examples might not be interesting, but also because I have no immediate uses for trees. FYI, -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
