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