构建一个用二叉链表存储一个公司组织机构的相关数据的程序,假设该公司的下属分支都只有两个分支,且公司的上下级关系为第一层级为总经理,第二层级为副总经理、第三层级为部门经理、第四层级为科室。其中设每个数据结点的数据项内容包括:部门的名称、负责人姓名。
时间: 2024-10-12 17:14:01 浏览: 68
两个一元多项式相加的程序
5星 · 资源好评率100%
构建这样的程序,我们可以使用递归的方式来表示这个公司的层级结构。首先,我们需要定义一个二叉链表节点(Node),包含部门名称(DepartmentName)和负责人姓名(ManagerName)字段。然后创建一个二叉树结构,其中根节点代表总经理,左子节点和右子节点分别代表副总经理和部门经理。
```python
class Node:
def __init__(self, department_name, manager_name):
self.department_name = department_name
self.manager_name = manager_name
self.left = None # 子节点,可以指向副总经理或部门经理
self.right = None
class CompanyOrganizationalStructure:
def __init__(self, root_manager):
self.root = Node("总经理", root_manager) # 根节点
def add_subordinate(self, parent_node, level, position):
if level == 1: # 总经理下只有一个副总
return self.add_deputy(parent_node, "副总经理")
elif level == 2: # 副总下有两个部门经理
return self.add_manager(parent_node, "部门A", "部门经理A") \
or self.add_manager(parent_node, "部门B", "部门经理B")
def add_manager(self, parent_node, department_name, manager_name):
new_node = Node(department_name, manager_name)
if parent_node.left is None:
parent_node.left = new_node
else:
parent_node.right = new_node
return new_node
# 使用示例
structure = CompanyOrganizationalStructure("张三")
subordinate1 = structure.add_subordinate(structure.root, 2, "A")
subordinate2 = structure.add_subordinate(subordinate1, 3, "部门A1")
```
在这个程序中,你可以通过`add_subordinate`函数添加新的层级,传递当前节点、层级以及职位信息。然后,每次调用会根据层级动态地创建左右子节点,模拟公司的组织架构。
阅读全文