function PreOrder = PreOrderAlg(ChildrenList) % PreOrder = PreOrderAlg(ChildrenList) PreOrder = PreOrderRecursiveAlg(ChildrenList,[]); function PreOrder = PreOrderRecursiveAlg(ChildrenList,PreOrder) %PreOrder = PreOrderRecursiveAlg(ChildrenList,PreOrder) %Input: ChildrenList: m + 1 column matrix (of integers) for an m-ary tree %Output: PreOrder: a vector containing the preorder list of the vertices if nnz(ChildrenList)>0 %tree is nonempty PreOrder = [PreOrder ChildrenList(1,1)]; end if nnz(ChildrenList)> 1 %root has children ChildChildrenLists = ChildTrees(ChildrenList); [r c s] = size(ChildChildrenLists); % s = number of children trees for i = 1:s PreOrder = PreOrderRecursiveAlg(ChildChildrenLists(:,:,i),PreOrder); end end