c语言链表实现树结构
时间: 2024-06-17 08:00:59 浏览: 103
在C语言中,链表是一种数据结构,常用于实现树形结构。树是由节点组成的数据结构,每个节点可以有零个或多个子节点。为了使用链表模拟树,我们可以为每个节点定义一个结构体,包含数据和指向子节点的指针。
以下是一个简单的链表实现二叉树的例子:
```c
// 定义二叉树节点结构
typedef struct TreeNode {
int data; // 节点数据
struct TreeNode* left; // 左子节点
struct TreeNode* right; // 右子节点
} Node;
// 创建新节点
Node* newNode(int value) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 插入节点到二叉搜索树(BST)中
void insert(Node** root, int value) {
if (*root == NULL) {
*root = newNode(value);
} else if (value < (*root)->data) {
insert(&(*root)->left, value);
} else {
insert(&(*root)->right, value);
}
}
// 深度优先遍历(如递归)
void inorderTraversal(Node* node) {
if (node != NULL) {
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
}
// 示例:创建并遍历树
int main() {
Node* root = NULL;
insert(&root, 50);
insert(&root, 30);
insert(&root, 20);
insert(&root, 40);
insert(&root, 70);
insert(&root, 60);
insert(&root, 80);
printf("Inorder traversal: ");
inorderTraversal(root);
return 0;
}
```
阅读全文