I would have used Nullable for the references (pointers) that can be null, assuming that they are as efficient as pointers that can be NULL in C/C++.
-erik On Fri, Nov 20, 2015 at 3:50 AM, Tim Holy <[email protected]> wrote: > There are several ways to implement this. You can see ProfileView for an > implementation using a left-child-right-sibling implementation. > Alternatively, > you could use an array or tuple to store the children. LCRS is probably the > most compact format, though. > > Compared to C++, the only real trick when doing this in julia is type- > stability. One could introduce a new type, EmptyNode, to indicate when > you've > gotten to a leaf node with no children. But I prefer to make leaf nodes of > the > same type as all other nodes so that all operations are type-stable. A > leaf- > node should point to itself; similarly, the root should have itself as a > parent. Obviously, you need to check for this. > > Best, > --Tim > > On Thursday, November 19, 2015 09:50:04 PM Vishnu Raj wrote: > > Hi, > > > > I want to create a tree of nodes where each node will have only one > parent > > and arbitrary number of children. Also each branch can go to arbitrary > > depth. Now, if I want to define julia type for such a node, how it should > > be like? > > In C++, I can use > > > > struct trieNode { > > // hold data > > unsigned id; > > float value; > > > > // to hold number of children of this node > > unsigned noOfChildren; > > // link to first child of this node, NULL is no child > > trieNode *firstChild; > > // pointer to next sibling(NULL if this is last child). Parent can access > > other children through their first child only > > trieNode *nextSibling; > > > > }; > > > > What is the equivalent of above in Julia? > > > > Is there a better/alternate way to solve this problem in Julia? > > > > Thanks ahead, > > vish > > -- Erik Schnetter <[email protected]> http://www.perimeterinstitute.ca/personal/eschnetter/
