C++随机树生成算法

本文介绍了一个使用C++实现的随机树生成算法,该算法基于深度优先策略。在生成过程中,通过随机数决定子节点的数量,并递归地生成规模小于等于输入规模S的树。算法以类`Node`和`Tree`的形式组织,`Node`包含子节点列表,而`Tree`类包含了生成随机树的主要方法`GenRan`和`GROW`。在`GROW`方法中,当规模超出限制时终止生长,否则根据剩余规模生成相应数量的子节点。`PrintTree`方法用于打印生成的树结构。
摘要由CSDN通过智能技术生成

规模限制的随机树生成算法:

在执行过程中,有两种孩子生长方式,即深度优先和广度优先。算法中用一个向量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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值