遍历组织树的一般步骤如下:

  1. 定义组织树节点类

组织树节点应该包含一个值(例如名称或 ID),以及一个指向父节点的指针和一个指向子节点的指针。如下所示:

class OrgNode {
    String value;
    OrgNode parent;
    List<OrgNode> children;
    
    public OrgNode(String value) {
        this.value = value;
        this.children = new ArrayList<>();
    }
    
    public void addChild(OrgNode child) {
        child.parent = this;
        children.add(child);
    }
}
  1. 创建组织树

根据需要创建一棵组织树,例如:

OrgNode root = new OrgNode("CEO");

OrgNode cto = new OrgNode("CTO");
OrgNode cfo = new OrgNode("CFO");
OrgNode coo = new OrgNode("COO");

OrgNode engineeringManager = new OrgNode("Engineering Manager");
OrgNode qaManager = new OrgNode("QA Manager");
OrgNode financeManager = new OrgNode("Finance Manager");
OrgNode salesManager = new OrgNode("Sales Manager");

OrgNode engineer1 = new OrgNode("Engineer 1");
OrgNode engineer2 = new OrgNode("Engineer 2");
OrgNode engineer3 = new OrgNode("Engineer 3");
OrgNode qa1 = new OrgNode("QA 1");
OrgNode qa2 = new OrgNode("QA 2");
OrgNode accountant1 = new OrgNode("Accountant 1");
OrgNode accountant2 = new OrgNode("Accountant 2");
OrgNode salesperson1 = new OrgNode("Salesperson 1");
OrgNode salesperson2 = new OrgNode("Salesperson 2");

root.addChild(cto);
root.addChild(cfo);
root.addChild(coo);

cto.addChild(engineeringManager);
cto.addChild(qaManager);

cfo.addChild(financeManager);

coo.addChild(salesManager);

engineeringManager.addChild(engineer1);
engineeringManager.addChild(engineer2);
engineeringManager.addChild(engineer3);

qaManager.addChild(qa1);
qaManager.addChild(qa2);

financeManager.addChild(accountant1);
financeManager.addChild(accountant2);

salesManager.addChild(salesperson1);
salesManager.addChild(salesperson2);
  1. 遍历组织树

可以使用递归方法遍历整棵组织树。以下是一些常见的遍历方法:

  • 前序遍历:先访问当前节点的值,然后遍历它的子节点。
  • 后序遍历:先遍历它的子节点,然后访问当前节点的值。
  • 层次遍历:按层次遍历整棵树,从根节点开始。

以下是一个实现前序遍历的例子:

public static void preOrderTraversal(OrgNode node) {
    if (node == null) {
        return;
    }
    
    System.out.println(node.value);
    
    for (OrgNode child : node.children) {
        preOrderTraversal(child);
    }
}

调用 preOrderTraversal(root) 即可遍历整棵组织树。

java 遍历组织树

原文地址: https://www.cveoy.top/t/topic/b1u3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录