c语言二叉树存放字符串
时间: 2024-12-14 09:06:47 浏览: 45
在C语言中,我们可以使用结构体来表示二叉树节点,每个节点可以包含一个字符串。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
char* str; // 存放字符串的指针
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
// 插入一个字符串到二叉树
void insertIntoBST(TreeNode** root, const char* str) {
if (*root == NULL) {
*root = (TreeNode*)malloc(sizeof(TreeNode));
(*root)->str = strdup(str); // 深拷贝字符串,防止原始字符串修改影响二叉树
return;
}
int cmp = strcmp(str, (*root)->str);
if (cmp < 0) {
insertIntoBST(&(*root)->left, str);
} else if (cmp > 0) {
insertIntoBST(&(*root)->right, str);
}
}
// 其他辅助函数如查找、删除等
int main() {
TreeNode* root = NULL;
insertIntoBST(&root, "abc");
insertIntoBST(&root, "def");
insertIntoBST(&root, "ghi");
// 现在你可以遍历这个二叉树,处理字符串
// 示例:按照字典序打印所有字符串
inorderTraversal(root, printf("%s\n", TreeNode::str)); // 假设有一个inorderTraversal函数用于中序遍历
free(root->str); // 注意释放内存
free(root);
return 0;
}
```
在这个示例中,我们首先定义了一个`TreeNode`结构体,包含一个指向字符串的指针以及左右孩子的指针。然后实现了插入字符串到二叉搜索树的功能。为了安全地存储字符串,这里用了`strdup`函数创建了字符串副本。
阅读全文
相关推荐


















