数据结构,用链表的方法建立二叉树, 实现二叉树的先序遍历算法。使用C语言
时间: 2024-10-24 22:02:21 浏览: 21
data_structure_c.rar_Datastructure_data_structure_c_二叉树_二叉树 c++_
在C语言中,我们可以使用链表数据结构来构建二叉树并实现先序遍历。首先,我们需要定义一个简单的二叉树节点结构体,包含一个指向左右孩子的指针:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左孩子
struct TreeNode* right; // 右孩子
} TreeNode;
```
然后,我们可以创建链表的方式插入节点来构造二叉树:
```c
TreeNode* insertNode(TreeNode** root, int val) {
if (*root == NULL) {
*root = (TreeNode*)malloc(sizeof(TreeNode));
(*root)->val = val;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (val < (*root)->val) {
(*root)->left = insertNode(&(*root)->left, val);
} else {
(*root)->right = insertNode(&(*root)->right, val);
}
return *root;
}
```
接下来,我们实现先序遍历(根-左-右)的递归函数:
```c
void preorderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->val); // 访问当前节点
preorderTraversal(node->left); // 遍历左子树
preorderTraversal(node->right); // 遍历右子树
}
}
```
最后,你可以这样使用上述函数:
```c
int main() {
TreeNode* root = NULL;
root = insertNode(&root, 5); // 插入根节点5
insertNode(&root, 3); // 插入左子树节点3
insertNode(&root, 7); // 插入右子树节点7
insertNode(&root, 2); // 插入左子树的左子树节点2
insertNode(&root, 4); // 插入左子树的右子树节点4
insertNode(&root, 6); // 插入右子树的左子树节点6
insertNode(&root, 8); // 插入右子树的右子树节点8
printf("Preorder traversal of the binary tree is: ");
preorderTraversal(root);
return 0;
}
```
阅读全文