用c语言写一个二叉树的建立及其遍历
时间: 2024-11-24 14:40:10 浏览: 4
【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) { // 如果根节点为空,创建新节点并返回
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = val;
newNode->left = newNode->right = NULL;
return newNode;
}
if (val < root->val) { // 向左递归
root->left = insertNode(root->left, val);
} else { // 向右递归
root->right = insertNode(root->right, val);
}
return root;
}
```
现在,我们可以编写前序遍历(根-根-右)的函数:
```c
void preOrderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 访问根节点
preOrderTraversal(root->left); // 遍历左子树
preOrderTraversal(root->right); // 遍历右子树
}
}
void inOrderTraversal(TreeNode* root) {
if (root != NULL) {
inOrderTraversal(root->left); // 遍历左子树
printf("%d ", root->val); // 访问根节点
inOrderTraversal(root->right); // 遍历右子树
}
}
```
为了使用以上代码,你需要先创建一个二叉树的根节点,并通过`insertNode`函数添加元素。然后可以分别调用`preOrderTraversal`和`inOrderTraversal`来遍历它。
阅读全文