规模限制的随机树生成算法:
在执行过程中,有两种孩子生长方式,即深度优先和广度优先。算法中用一个向量NodeVec存放当前生成树从左到右所有的叶子节点。描述如下:
输入:生成树的规模S;
输出:规模小于等于S的随机树
class Node
{
public:
list<Node*> ChildList;
intID;
intDEPTH;
Node(void);
~Node(void);
};
class Tree
{
private:
vector<list<Node*>>NodeVec;//保存随机树的向量
intS;//随机树的规模
intt;//随机树根节点的位置
public:
Tree(void);
~Tree(void);
floatGenRan();//产生随机数
intGROW(int S,Node* node,int &cnt);
voidPrintTree();
};
float Tree::GenRan(){
float number=(float)rand()/RAND_MAX;
cout<<"number="<<number<<endl;
return number;
}
int Tree::GROW(int