That works too. It might be an extra check here and there, but it may not be noticeable.
--Tim On Friday, November 20, 2015 07:18:41 AM Erik Schnetter wrote: > 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
