完整的代码C语言,带测试案例设计二叉树结构,实现家族族谱树创建及相关查找
时间: 2024-12-10 21:43:52 浏览: 20
在C语言中,我们可以使用结构体来表示二叉树节点,然后通过递归的方式创建和操作家族族谱树。以下是一个简单的二叉树结构和部分函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int value;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->value = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点到二叉树
TreeNode* insertIntoTree(TreeNode* root, int val) {
if (root == NULL) {
return createNode(val);
}
if (val < root->value) {
root->left = insertIntoTree(root->left, val);
} else if (val > root->value) {
root->right = insertIntoTree(root->right, val);
}
return root;
}
// 查找特定值
TreeNode* searchTree(TreeNode* root, int val) {
if (root == NULL || root->value == val)
return root;
if (val < root->value)
return searchTree(root->left, val);
else
return searchTree(root->right, val);
}
// 测试案例
int main() {
TreeNode* root = NULL;
// 创建一个简单的家族族谱树,例如祖先、父母和孩子
root = insertIntoTree(root, 50); // 祖先
insertIntoTree(root, 30); // 父亲
insertIntoTree(root, 40); // 母亲
insertIntoTree(root, 20); // 子女A
insertIntoTree(root, 25); // 子女B
// 查找特定成员
TreeNode* found = searchTree(root, 20);
if (found) {
printf("Found member with value %d\n", found->value);
} else {
printf("Member not found.\n");
}
// 释放内存
free(found);
return 0;
}
```
阅读全文