C语言1)建立二叉树。 2)按先序、中序、后序方式遍历二叉树。 程序的基本要求:采用二叉链表存储结构表示二叉树;通过二叉树广义表输入所有结点建立二叉树;通过递归算法实现二叉树的遍历并输出结点数据信息。
时间: 2024-12-10 20:50:54 浏览: 24
建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数
在C语言中,我们可以使用结构体和链表来建立和遍历二叉树。以下是基本步骤:
1**建立二叉树**:
首先定义一个二叉链表节点的数据结构:
```c
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
创建二叉树的主要函数可以接受一个数组作为输入,然后递归地插入节点:
```c
TreeNode* createBinaryTree(int arr[], int start, int end) {
if (start > end)
return NULL;
// 选取中间值作为根节点
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = arr[start];
// 递归处理左右子树
root->left = createBinaryTree(arr, start + 1, end);
root->right = createBinaryTree(arr, start + 1, end);
return root;
}
```
2**二叉树的遍历**:
有三种常见的遍历方式:先序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。这里给出递归版本的遍历函数:
- 先序遍历:
```c
void preorderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->data); // 打印节点值
preorderTraversal(node->left);
preorderTraversal(node->right);
}
}
阅读全文