C语言树状结构遍历
作者:野牛程序员:2023-11-24 16:46:03C语言阅读 2460
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