Let's define the function that allows to associate randomly a certain number of leafs for each child under a constraint : the total number of leafs is 100 and the function that allows to add_link between each child with its leafs. Please don't hesitate to modify the code, there is some improvement to do. hope the problem is more clear for you
function random_edges(nleafs) #nleafs = 100 x=rand(1:nleafs,(1,10)) # (1,10) to tell that we have 10 childs while (sum(x) !== nleafs) # the while loop allows to get a tuple of 10 values where each value represents the number of # of leafs for each child where sum(x)= nleafs x=rand(1:nleafs,(1,10)) end return x end y=random_edges(100) 1x10 Array{Int64,2}: 3 1 7 5 13 7 30 6 18 10 sum(y) 100 # child 1 has 3 leafs , child 2 has 1 leaf, child 3 has 7 leafs ...... child 10 has ten leafs # here we need to define the function that allows to link each child to its leafs and transfer data from each child to its leafs # some improvement to do !!!! x=random_edges(100) # 100 number of leafs needed function add_leafs!(childs,x) #x : the output of the function random_edges childs : the output of the function add_children! data = child data ? # the data of each child level = childs.level +1 # since the level of child is 1 then the level of leafs is 2 h = 0 for i in 1:length(x) while h < x[i] # how to link each child to its leafs. for example i= 1 x[1]= 3 then we need to have 3 leafs for child 1 and so on ... leaf=MyNode(data,level, MyNode[], 0) push!(childs.leaf,leaf) h += 1 end end end Thank you On Friday, July 1, 2016 at 12:41:09 PM UTC+2, Andre Bieler wrote: > > Well the child can also have children, just like in your graph you > attached. This is then one level down in your graph. > > Note that the root is of the same type as the children. (MyNode can be > parent, child, grandchild etc.) The children are just put inside the root. > Then you can continue and put children into these children. This is how you > get the tree structure. > > I hope this is somehow clear. > > Best, > Andre > >