使用向量

时间:2018-05-10 21:14:01

标签: c++ tree breadth-first-search

    class Employee {
    public:
        const std::string const getName();
        const std::vector<Employee>& const getSubordinates();
    private:
        std::string name;
        std::vector<Employee> subordinates;
    };

    void printEmployeeLevels(Employee e)
    {
    }

我的程序应该能够使用广度优先遍历来打印层次结构中员工的姓名。例如,给定的员工e可以拥有下属a和b。员工a可能有下属c和d,而员工b可能有下属f。从属c可能具有从属g。

我的问题是我不知道如何将它应用于一个二元树,它没有真正具有左右子属性的节点结构。我的主要问题是:如果我使用队列来执行此遍历,我应该将它作为Employee对象的队列,还是Employee对象的向量队列?

    void printEmployeeLevels(Employee e)
    {
        Queue<Employee> q;

        q.enqueue(e);

        while (1){
        while(!q.isEmpty())
        {
            Employee k = q.front();
            std::vector<Employee> v = k.getSubordinates();
            for (int i = 0; i < k.getSubordinates().size(); ++i)
            {
                q.enqueue(v[i]);
                std::cout << v[i].getName() << " ";
            }
            q.dequeue();
            std::cout << '\n';
        }
        }
    }

预期输出为:(给定上面的场景,其中子节点的顺序无关紧要)

电子
a b
c d f
g

0 个答案:

没有答案