在C语言中构建一个二叉链表,并且完成遍历
时间: 2024-11-09 20:17:17 浏览: 4
在C语言中,我们可以使用结构体来表示二叉链表的节点,每个节点通常包含两个指针,分别指向左孩子和右孩子,以及一个数据域。下面是一个简单的二叉链表的节点定义和基本操作:
```c
// 定义二叉链表节点
typedef struct Node {
int data; // 数据域
struct Node* left; // 左子节点指针
struct Node* right; // 右子节点指针
} TreeNode;
// 创建一个新的节点
TreeNode* createNode(int value) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点到链表
void insertNode(TreeNode** root, int value) {
if (*root == NULL) {
*root = createNode(value);
} else if (value < (*root)->data) {
insertNode(&(*root)->left, value);
} else {
insertNode(&(*root)->right, value);
}
}
// 遍历二叉链表(先序遍历)
void preOrderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->data); // 先访问根节点
preOrderTraversal(root->left); // 然后左子树
preOrderTraversal(root->right); // 最后右子树
}
}
// 示例:
int main() {
TreeNode* root = NULL;
insertNode(&root, 50);
insertNode(&root, 30);
insertNode(&root, 20);
insertNode(&root, 40);
insertNode(&root, 70);
insertNode(&root, 60);
printf("Preorder traversal of the binary tree is: ");
preOrderTraversal(root);
return 0;
}
```
阅读全文