利用先序遍历的创建一棵二叉树c语言编程并附带注释
时间: 2024-12-02 22:19:33 浏览: 28
在C语言中,我们可以使用递归的方式来实现二叉树的先序遍历(根节点 -> 左子树 -> 右子树)。下面是一个简单的示例,我们将创建一个结构体表示二叉树节点,并提供函数`preorder_traversal`来进行遍历:
```c
#include <stdio.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val; // 节点值
struct TreeNode *left; // 左孩子指针
struct TreeNode *right; // 右孩子指针
} TreeNode;
// 创建新节点函数
TreeNode* createNode(int data) {
TreeNode *newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 先序遍历函数
void preorder_traversal(TreeNode* root) {
if (root != NULL) { // 如果当前节点非空
printf("%d ", root->val); // 输出节点值
preorder_traversal(root->left); // 遍历左子树
preorder_traversal(root->right); // 遍历右子树
}
}
int main() {
// 创建一个示例二叉树
TreeNode *root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
printf("Preorder traversal of the binary tree: ");
preorder_traversal(root);
printf("\n");
return 0;
}
```
在这个例子中,我们首先创建了一个二叉树,然后调用`preorder_traversal`函数进行先序遍历。当遍历到每个节点时,会先打印其值,再递归地访问其左右子节点。
阅读全文