使用c语言实现二叉树的先序、中序、后续的遍历
时间: 2023-08-03 22:07:28 浏览: 69
好的,下面是使用C语言实现二叉树的先序、中序、后续的遍历的代码:
```c
#include<stdio.h>
#include<stdlib.h>
//定义二叉树结构体
typedef struct TreeNode{
int data;
struct TreeNode *left;
struct TreeNode *right;
}TreeNode;
//创建二叉树
TreeNode* createBinaryTree(){
int value;
scanf("%d", &value);
if(value == -1){
return NULL;
}
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = value;
root->left = createBinaryTree();
root->right = createBinaryTree();
return root;
}
//先序遍历二叉树
void preOrder(TreeNode *root){
if(root == NULL){
return;
}
printf("%d ", root->data); //先输出根节点
preOrder(root->left); //递归遍历左子树
preOrder(root->right); //递归遍历右子树
}
//中序遍历二叉树
void inOrder(TreeNode *root){
if(root == NULL){
return;
}
inOrder(root->left); //递归遍历左子树
printf("%d ", root->data); //输出根节点
inOrder(root->right); //递归遍历右子树
}
//后序遍历二叉树
void postOrder(TreeNode *root){
if(root == NULL){
return;
}
postOrder(root->left); //递归遍历左子树
postOrder(root->right); //递归遍历右子树
printf("%d ", root->data); //输出根节点
}
int main(){
TreeNode *root = createBinaryTree();
printf("先序遍历结果:");
preOrder(root);
printf("\n中序遍历结果:");
inOrder(root);
printf("\n后序遍历结果:");
postOrder(root);
printf("\n");
return 0;
}
```
在这里,我们使用了递归的方式实现了二叉树的先序、中序、后序遍历。其中,先序遍历的顺序是根节点、左子树、右子树;中序遍历的顺序是左子树、根节点、右子树;后序遍历的顺序是左子树、右子树、根节点。
阅读全文