#include <stdio.h>
#include <stdlib.h>
//二叉树节点的结构体
typedef struct TreeNode
{
int data;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
//创建二叉树
TreeNode* create_tree()
{
int data;
printf("enter node value:");
scanf("%d", &data);
if(data == -1){
return NULL;
}
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = data;
printf("enter left child\n");
newNode->left = create_tree();
printf("enter right child\n");
newNode->right = create_tree();
return newNode;
}
//前序遍历
void pre_traversal(TreeNode* root)
{
if(root != NULL){
printf("%d ", root->data);
pre_traversal(root->left);
pre_traversal(root->right);
}
}
//中序遍历
void in_traversal(TreeNode* root)
{
if(root != NULL){
in_traversal(root->left);
printf("%d ",root->data);
in_traversal(root->right);
}
}
//后序遍历
void post_traversal(TreeNode* root)
{
if(root != NULL){
post_traversal(root->left);
post_traversal(root->right);
printf("%d ",root->data);
}
}
//销毁二叉树
void destroy_tree(TreeNode* root)
{
if(root != NULL){
destroy_tree(root->left);
destroy_tree(root->right);
free(root);
}
}
int main(int argc, const char *argv[])
{
TreeNode* root = create_tree();
printf("前序遍历: ");
pre_traversal(root);
putchar(10);
printf("中序遍历: ");
in_traversal(root);
putchar(10);
printf("后序遍历: ");
post_traversal(root);
putchar(10);
destroy_tree(root);
return 0;
}
编写程序实现二叉树的创建,三种遍历自己销毁
最新推荐文章于 2024-11-07 23:35:47 发布
本文详细介绍了如何使用C语言实现二叉树的数据结构,包括创建树、前序、中序和后序遍历以及销毁树的过程,展示了递归在这些操作中的应用。
摘要由CSDN通过智能技术生成