【问题标题】:Storing hierarchical structure of a company存储公司的层次结构
【发布时间】:2013-06-30 09:53:57
【问题描述】:

我必须维护公司的员工结构。每个员工都有一个唯一的名称(没有两个同名)和一个级别(整数)。级别表示人员在层次结构中的位置。级别 1 = 最高(级别 1 只能有 1 名员工,但级别 i > 1 可以有多名员工)。每个级别 i 的员工都在级别 i-1 的员工下工作,该员工是他/她的直接上司。现在,给定任何员工说 A,有员工 A',A''... 这样 A 在 A' 下工作,A' 在 A'' 下工作,依此类推。我需要创建一个合适的树形结构。

我需要实现以下方法:

addEmployee(new, boss) - new 将立即在 boss 下工作

delEmployee(e1, e2) - e1 将被删除,e1 下的所有员工现在都将在 e2 下工作。 (注意 - e1 和 e2 处于同一级别)

lowestCommonBoss(e1, e2) - 不言自明

printEmployees() - 按级别打印所有员工的姓名

现在我要做的是创建一个节点类:

public class Node {
    String element;
    Node parent;
    protected ArrayList<Node> children;
    protected int level;

    Node(String e) {
    this.element = e;
    this.parent = null;
    this.children = new Arraylist();
    this.level = 1;
    }
}

现在,我应该遵循什么样的树结构?这是我要找的节点吗?

【问题讨论】:

  • 似乎符合您的要求,除了构造函数。使您的构造函数通用:考虑除根以外的其他情况。元素是您要保留的唯一信息吗?
  • 您的问题太笼统,没有说明您是否使用数据库。如果是这样,如果您需要生成统计信息或使用其他功能。请说明。
  • @VaibhavRaj 是的,我想是的。我需要的只是员工的姓名作为字符串。
  • @surfealokesea 不,我没有使用数据库或任何类似的东西。添加员工将在 main() 方法本身中完成。
  • @Saket:使用 Set children 而不是 ArrayList children 并覆盖 Node 类的 equals 和 hashCode 方法,因为您的要求表明每个员工都是独一无二的。我认为您正在考虑属性元素的唯一性。

标签: java data-structures avl-tree


【解决方案1】:

是的,您可以使用任何您想要的树形结构。你提到的结构对我来说是可行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多