先序遍历二叉树的完整代码 C语言
时间: 2023-11-24 07:07:36 浏览: 77
以下是先序遍历二叉树的完整代码,使用C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
TreeNode* insertNode(TreeNode* node, int val) {
if (node == NULL) {
return createNode(val);
}
if (val < node->data) {
node->left = insertNode(node->left, val);
} else if (val > node->data) {
node->right = insertNode(node->right, val);
}
return node;
}
// 先序遍历二叉树
void preOrderTraversal(TreeNode* node) {
if (node == NULL) {
return;
}
printf("%d ", node->data);
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
int main() {
TreeNode* root = NULL;
int arr[] = {5, 3, 7, 1, 4, 6, 8};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++) {
root = insertNode(root, arr[i]);
}
printf("先序遍历结果:");
preOrderTraversal(root);
printf("\n");
return 0;
}
```
上述代码中,我们首先定义了一个结构体 `TreeNode` 作为二叉树节点的数据结构,并实现了创建节点的函数 `createNode` 和插入节点的函数 `insertNode`。然后,我们定义了先序遍历二叉树的函数 `preOrderTraversal`,递归地遍历二叉树,输出节点的值。最后,在主函数中,我们创建了一个二叉搜索树,并调用先序遍历函数输出遍历结果。
阅读全文