type MyNode{T}
  data::T
  level::Int
  child:: Vector{MyNode}
  nchilds :: Int
  nLeafs::Int      
  leafs::Vector{MyNode}

end


MyNode() = MyNode(0,0,MyNode[])

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
        # addEdge() and TransferData() to be developed 
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.
  # addEdge() and TransferData() to be developed 


end
