c语言编写二叉树接口函数
时间: 2023-10-04 13:05:55 浏览: 93
用C语言编写二叉树
以下是一个简单的二叉树结构定义及基本接口函数的示例:
```c
// 二叉树结点定义
typedef struct TreeNode {
int val; // 结点值
struct TreeNode* left; // 左子树指针
struct TreeNode* right; // 右子树指针
} TreeNode;
// 创建一个新结点
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入结点
void insertNode(TreeNode** root, int val) {
if (*root == NULL) {
*root = createNode(val);
} else if (val < (*root)->val) {
insertNode(&(*root)->left, val);
} else {
insertNode(&(*root)->right, val);
}
}
// 查找结点
TreeNode* searchNode(TreeNode* root, int val) {
if (root == NULL || root->val == val) {
return root;
} else if (val < root->val) {
return searchNode(root->left, val);
} else {
return searchNode(root->right, val);
}
}
// 删除结点
TreeNode* deleteNode(TreeNode* root, int val) {
if (root == NULL) {
return root;
} else if (val < root->val) {
root->left = deleteNode(root->left, val);
} else if (val > root->val) {
root->right = deleteNode(root->right, val);
} else {
if (root->left == NULL) {
TreeNode* temp = root->right;
free(root);
return temp;
} else if (root->right == NULL) {
TreeNode* temp = root->left;
free(root);
return temp;
}
TreeNode* temp = findMinNode(root->right);
root->val = temp->val;
root->right = deleteNode(root->right, temp->val);
}
return root;
}
// 查找最小值结点
TreeNode* findMinNode(TreeNode* root) {
while (root->left != NULL) {
root = root->left;
}
return root;
}
```
这里给出了二叉树的基本操作:创建结点、插入结点、查找结点、删除结点、查找最小值结点。这些函数可以组合使用来实现更复杂的操作,如遍历、查找最大值结点等。
阅读全文