c语言如何遍历二叉树

avatar
作者
猴君
阅读量:0

在C语言中,遍历二叉树有多种方法,包括前序遍历、中序遍历和后序遍历。这里给出一个简单的例子来说明如何实现这三种遍历方法。

首先,我们需要定义一个二叉树节点的结构体:

#include<stdio.h> #include <stdlib.h>  typedef struct TreeNode {     int data;     struct TreeNode *left;     struct TreeNode *right; } TreeNode; 

接下来,我们实现三种遍历方法的函数:

// 前序遍历:根节点 -> 左子树 -> 右子树 void preOrderTraversal(TreeNode *node) {     if (node == NULL) {         return;     }      printf("%d ", node->data);     preOrderTraversal(node->left);     preOrderTraversal(node->right); }  // 中序遍历:左子树 -> 根节点 -> 右子树 void inOrderTraversal(TreeNode *node) {     if (node == NULL) {         return;     }      inOrderTraversal(node->left);     printf("%d ", node->data);     inOrderTraversal(node->right); }  // 后序遍历:左子树 -> 右子树 -> 根节点 void postOrderTraversal(TreeNode *node) {     if (node == NULL) {         return;     }      postOrderTraversal(node->left);     postOrderTraversal(node->right);     printf("%d ", node->data); } 

最后,我们可以创建一个二叉树并遍历它:

int main() {     TreeNode *root = (TreeNode *)malloc(sizeof(TreeNode));     root->data = 1;     root->left = (TreeNode *)malloc(sizeof(TreeNode));     root->right = (TreeNode *)malloc(sizeof(TreeNode));     root->left->data = 2;     root->right->data = 3;     root->left->left = (TreeNode *)malloc(sizeof(TreeNode));     root->left->right = (TreeNode *)malloc(sizeof(TreeNode));     root->left->left->data = 4;     root->left->right->data = 5;     root->right->left = (TreeNode *)malloc(sizeof(TreeNode));     root->right->right = (TreeNode *)malloc(sizeof(TreeNode));     root->right->left->data = 6;     root->right->right->data = 7;      printf("前序遍历:");     preOrderTraversal(root);     printf("\n");      printf("中序遍历:");     inOrderTraversal(root);     printf("\n");      printf("后序遍历:");     postOrderTraversal(root);     printf("\n");      return 0; } 

运行这个程序,你将看到以下输出:

前序遍历:1 2 4 5 3 6 7 中序遍历:4 2 5 1 6 3 7 后序遍历:4 5 2 6 7 3 1 

这就是如何在C语言中遍历二叉树的方法。注意,这个例子中的二叉树结构比较简单,实际应用中的二叉树可能会更复杂。

广告一刻

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