生成代码 首先,从记事本中依次读取每一行通讯录内容,将读取的所有教师信息按照年龄构建成二叉排序树,如图8-2所示。然后,分别通过对二叉排序树的先序遍历显示所有教师信息,通过二叉排序树的后序遍历按照姓名查询某位教师通讯信息,通过二叉排序树后序遍历按照部门查询该部门所有教师的通讯信息;最后,通过二叉排序树的中序遍历输出青年教师(≤35岁)通讯信息,遍历过程中,如果某个结点的年龄大于35岁,那么不再需要遍历该结点的右子树。
时间: 2024-02-21 13:59:50 浏览: 60
以下是基于你提供的要求的伪代码实现:
```
// 定义二叉排序树的结构体
struct TreeNode {
int age; // 年龄
char* name; // 姓名
char* department; // 部门
char* phone; // 电话
TreeNode* left; // 左子树
TreeNode* right; // 右子树
};
// 插入结点到二叉排序树中
void insertNode(TreeNode** root, int age, char* name, char* department, char* phone) {
if (*root == NULL) {
*root = new TreeNode();
(*root)->age = age;
(*root)->name = name;
(*root)->department = department;
(*root)->phone = phone;
(*root)->left = NULL;
(*root)->right = NULL;
return;
}
if (age < (*root)->age) {
insertNode(&(*root)->left, age, name, department, phone);
} else {
insertNode(&(*root)->right, age, name, department, phone);
}
}
// 先序遍历二叉排序树,输出所有教师信息
void preOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
cout << "姓名:" << root->name << " 年龄:" << root->age << " 部门:" << root->department << " 电话:" << root->phone << endl;
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
// 后序遍历二叉排序树,按照姓名查询某位教师通讯信息
void postOrderTraversalByName(TreeNode* root, char* name) {
if (root == NULL) {
return;
}
postOrderTraversalByName(root->left, name);
postOrderTraversalByName(root->right, name);
if (strcmp(root->name, name) == 0) {
cout << "姓名:" << root->name << " 年龄:" << root->age << " 部门:" << root->department << " 电话:" << root->phone << endl;
}
}
// 后序遍历二叉排序树,按照部门查询该部门所有教师的通讯信息
void postOrderTraversalByDepartment(TreeNode* root, char* department) {
if (root == NULL) {
return;
}
postOrderTraversalByDepartment(root->left, department);
postOrderTraversalByDepartment(root->right, department);
if (strcmp(root->department, department) == 0) {
cout << "姓名:" << root->name << " 年龄:" << root->age << " 部门:" << root->department << " 电话:" << root->phone << endl;
}
}
// 中序遍历二叉排序树,输出青年教师(≤35岁)通讯信息
void inOrderTraversalYoung(TreeNode* root) {
if (root == NULL) {
return;
}
inOrderTraversalYoung(root->left);
if (root->age <= 35) {
cout << "姓名:" << root->name << " 年龄:" << root->age << " 部门:" << root->department << " 电话:" << root->phone << endl;
inOrderTraversalYoung(root->right);
}
}
```
以上是伪代码实现,具体的代码实现需要根据你的具体编程语言来进行。同时,代码实现中可能还需要添加一些错误处理等相关逻辑。
阅读全文