C语言树状结构遍历
作者:野牛程序员:2023-11-24 16:46:03C语言阅读 2823
C语言中,树状结构的遍历通常可以通过递归来实现。以下是一个简单的示例代码,演示了如何遍历二叉树:
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// 创建新节点
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 递归前序遍历
void preOrderTraversal(struct Node* root) {
if (root != NULL) {
printf("%d ", root->data);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
}
// 递归中序遍历
void inOrderTraversal(struct Node* root) {
if (root != NULL) {
inOrderTraversal(root->left);
printf("%d ", root->data);
inOrderTraversal(root->right);
}
}
// 递归后序遍历
void postOrderTraversal(struct Node* root) {
if (root != NULL) {
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printf("%d ", root->data);
}
}
int main() {
// 构建一个简单的二叉树
struct Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 输出遍历结果
printf("前序遍历: ");
preOrderTraversal(root);
printf("\\n");
printf("中序遍历: ");
inOrderTraversal(root);
printf("\\n");
printf("后序遍历: ");
postOrderTraversal(root);
printf("\\n");
// 释放节点内存
free(root->left->left);
free(root->left->right);
free(root->left);
free(root->right);
free(root);
return 0;
}这个例子中,通过 preOrderTraversal、inOrderTraversal 和 postOrderTraversal 分别实现了前序、中序和后序遍历。在实际的应用中,可以根据具体的树结构和遍历需求来修改和扩展这些函数。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

