Java 用不同数据类型的节点实现树

Java 用不同数据类型的节点实现树,java,c++,tree,tree-search,Java,C++,Tree,Tree Search,我必须组合计算一项任务的所有可能案例。我想为此做一棵树。有几个作业,每个作业都有几个子作业。有很多代理可以做这些工作。假设作业1子作业1可以由代理1或2完成,则作业1子作业2将由任一代理完成。然后将启动作业2。等等 由于节点是不同的,并且子节点的数量在不同级别上也会发生变化,因此我的问题是: 实现相同功能的最佳数据结构是什么 使用您推荐的数据结构遍历树的最佳方法是什么 请给出具体的C++/Java示例或web源代码,而不仅仅是抽象的建议,因为我不擅长编码 编辑: 请参考我心目中的树的流程图 嗯,

我必须组合计算一项任务的所有可能案例。我想为此做一棵树。有几个作业,每个作业都有几个子作业。有很多代理可以做这些工作。假设作业1子作业1可以由代理1或2完成,则作业1子作业2将由任一代理完成。然后将启动作业2。等等 由于节点是不同的,并且子节点的数量在不同级别上也会发生变化,因此我的问题是:

  • 实现相同功能的最佳数据结构是什么

  • 使用您推荐的数据结构遍历树的最佳方法是什么

  • 请给出具体的C++/Java示例或web源代码,而不仅仅是抽象的建议,因为我不擅长编码

    编辑:

    请参考我心目中的树的流程图


    嗯,我认为树不是满足您需求的最佳数据结构。我建议使用
    std::vector
    Jobs
    。每个
    作业
    都应该有一个
    子作业的容器

    您的计划可以在向量中迭代,这比在树中迭代容易得多

    编辑1:代码

    class Subjob;
    class Job
    {
      std::vector<Subjob> other_jobs;
    };
    
    std::vector<Job> task_container;
    
    类主题;
    班级作业
    {
    std::矢量其他_作业;
    };
    std::向量任务_容器;
    
    由于声誉不佳,我无法发布图像。如果添加一个链接,肯定会有人编辑您的问题以包含该图像。@JoachimPileborg添加了一个有用的图像链接。@gknicker请参阅编辑部分中的链接,我可以通过
    任务容器
    轻松迭代,如:
    vector::iterator it;对于(it=task\u container.begin();it!=task\u container.end();++it)
    。但是如何使用it迭代器来访问其他作业的向量元素呢?请给出代码。遍历向量都是一样的。对于成员
    其他_作业
    ,您将初始化一个迭代器,
    std::vector::iterator
    ,直到开始,
    其他_作业。begin()
    ,并增加迭代器以指向下一个元素。因此,我将初始化成员
    其他_作业的迭代器
    it
    ,直到开头,如
    it.other_jobs.begin()
    it->other_jobs.begin()