java 遍历组织树
遍历组织树的一般步骤如下:
- 定义组织树节点类
组织树节点应该包含一个值(例如名称或 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);
}
}
- 创建组织树
根据需要创建一棵组织树,例如:
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);
- 遍历组织树
可以使用递归方法遍历整棵组织树。以下是一些常见的遍历方法:
- 前序遍历:先访问当前节点的值,然后遍历它的子节点。
- 后序遍历:先遍历它的子节点,然后访问当前节点的值。
- 层次遍历:按层次遍历整棵树,从根节点开始。
以下是一个实现前序遍历的例子:
public static void preOrderTraversal(OrgNode node) {
if (node == null) {
return;
}
System.out.println(node.value);
for (OrgNode child : node.children) {
preOrderTraversal(child);
}
}
调用 preOrderTraversal(root) 即可遍历整棵组织树。
原文地址: https://www.cveoy.top/t/topic/b1u3 著作权归作者所有。请勿转载和采集!