function PostOrder = PostOrderAlg(ChildrenList)
% PostOrder = PostOrderAlg(ChildrenList)
PostOrder = PostOrderRecursiveAlg(ChildrenList,[]);



function PostOrder = PostOrderRecursiveAlg(ChildrenList,PostOrder)
%PostOrder = PostOrderRecursiveAlg(ChildrenList,PostOrder)
%Input: ChildrenList: m + 1 column matrix (of integers) for an m-ary tree
%Output: PostOrder: a vector containing the postorder list of the vertices
if nnz(ChildrenList)== 1 %tree consists only of root
    PostOrder = [PostOrder 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
         PostOrder = PostOrderRecursiveAlg(ChildChildrenLists(:,:,i),PostOrder);
     end
     PostOrder = [PostOrder ChildrenList(1,1)];
end

    




        


