建立一棵含有n个结点的二叉树,采用二叉链表存储; 输出前序遍历该二叉树的遍历结果。C语言
时间: 2024-12-12 08:26:09 浏览: 13
头歌数据结构二叉树的二叉链表存储及基本操作
5星 · 资源好评率100%
在 C 语言中,你可以使用结构体来表示二叉树的节点,并利用链表的方式来存储它们。首先,我们定义一个二叉树节点结构:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
// 创建一个新的二叉树节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
```
接下来,我们可以编写函数来建立一棵含有 n 个节点的二叉树,并进行前序遍历:
```c
// 构建满二叉树
TreeNode* buildFullBinaryTree(int n) {
if (n <= 0) return NULL;
TreeNode* root = createNode(n);
int leftSubtreeSize = n / 2;
root->left = buildFullBinaryTree(leftSubtreeSize);
root->right = buildFullBinaryTree(n - leftSubtreeSize - 1);
return root;
}
// 前序遍历
void preOrderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 输出当前节点的值
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
}
int main() {
int n = 5; // 举例,你可以根据需要更改这个值
TreeNode* root = buildFullBinaryTree(n);
printf("前序遍历结果:");
preOrderTraversal(root);
free(root); // 清理内存
return 0;
}
```
在 `main()` 函数中,我们首先创建一个满二叉树,然后通过 `preOrderTraversal` 函数进行前序遍历,并打印出遍历结果。注意,在实际操作结束后,记得释放动态分配的内存以避免内存泄漏。
阅读全文