  The Steiner tree enumeration problem is a well known problem that asks for
enumerating Steiner trees. Numerous theoretical works proposed algorithms for
the problem and analyzed their complexity, but there are no practical
algorithms and experimental studies. In this paper, we study the Steiner tree
enumeration problem practically. We define a problem cost-constrained minimal
Steiner tree enumeration problem, which enumerates minimal Steiner trees with
costs not larger than a given threshold. To solve the problem, we propose a
binary decision diagram (BDD)-based algorithm. The BDD-based algorithm
constructs a BDD that compactly represents the set of minimal Steiner trees and
then traverses the BDD for enumeration. We develop a novel {\it frontier-based
algorithm} to efficiently construct BDDs. Our BDD traverse algorithm prunes
Steiner trees with costs larger than the threshold. We also extend our
algorithm by preprocessing the given graph and controlling the number of
generated Steiner trees in order to reduce the memory and computation costs.
The extension makes our algorithm scalable by generating a subset of the
minimal Steiner trees. We validate that our algorithm can enumerate Steiner
trees in real-world graphs more efficiently than existing methods.
