type MyNode  # I need data to be distributed to each child and each leaf  data=rand(10000) for instance than we share the data with the childs0 for instache child1 1000 values, child2 3000 ...child8  700 values ....child 10.  So when we add the variable data, our type becomes as follows type MyNode{T}
data::T
  level::Int
 # l think we should declare number of child (level 1)  nchilds:: Int
 # childs::Vector{MyNode}
    nLeafs::Int      #  does nLeafs represents the number of leafs ?
    leafs::Vector{MyNode}

end

# edge function is needed here in order to make a link  between the root and childs then childs with leafs ?

MyNode() = MyNode(0,0,MyNode[]) # What is the purpose of this instanciation ? root = MyNode(0,N, [MyNode() for i in 1:N]) can't be sufficient ?

N = 10 # number of child  ? 
root = MyNode(0,N, [MyNode() for i in 1:N])




# in the first level l need to link the root to the child. the number of childs is 10

childs=MyNode(1,N, [MyNode() for i in 1:N])

for node in root.childs
	# add edges between root and each child , transfer the data from root to childs
end




k= 100 # number of leafs

leafs=Mynode(1,k,[MyNode() for i in 1:K])


# in the second level we add edge between each child and its leafs . let's set the total number of leafs is 100 

for node in child.leafs


     # add edges between each childs with its leafs. the number of leafs of each child may differ for instance child 1 has 5 leafs child 7 has  3 leafs and so one. We just need to have the total number of leafs equals 100.


end
