C语言二叉树遍历代码怎么写

avatar
作者
筋斗云
阅读量:0

以下是C语言中二叉树的三种遍历方式(前序遍历、中序遍历和后序遍历)的代码实现:

#include <stdio.h> #include <stdlib.h>  typedef struct Node {     int data;     struct Node* left;     struct Node* right; } Node;  // 创建新节点 Node* createNode(int data) {     Node* newNode = (Node*)malloc(sizeof(Node));     if(newNode == NULL) {         printf("内存分配失败!\n");         exit(1);     }     newNode->data = data;     newNode->left = NULL;     newNode->right = NULL;     return newNode; }  // 前序遍历 void preorderTraversal(Node* root) {     if(root != NULL) {         printf("%d ", root->data);  // 先访问根节点         preorderTraversal(root->left);  // 再前序遍历左子树         preorderTraversal(root->right);  // 最后前序遍历右子树     } }  // 中序遍历 void inorderTraversal(Node* root) {     if(root != NULL) {         inorderTraversal(root->left);  // 先中序遍历左子树         printf("%d ", root->data);  // 再访问根节点         inorderTraversal(root->right);  // 最后中序遍历右子树     } }  // 后序遍历 void postorderTraversal(Node* root) {     if(root != NULL) {         postorderTraversal(root->left);  // 先后序遍历左子树         postorderTraversal(root->right);  // 再后序遍历右子树         printf("%d ", root->data);  // 最后访问根节点     } }  int main() {     // 创建二叉树     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");      return 0; } 

这段代码首先定义了一个二叉树节点的结构体 Node,其中包含数据 data、左子节点指针 left 和右子节点指针 right。接着,定义了创建新节点的函数 createNode,用于动态分配内存,并返回新节点。然后,分别实现了三种遍历方式的函数:preorderTraversal(前序遍历)、inorderTraversal(中序遍历)和 postorderTraversal(后序遍历)。最后,在 main 函数中创建了一个二叉树,并分别调用了三种遍历函数,打印出遍历结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!