#include<stdlib.h>
#include<stdio.h>
#include<assert.h>
//定义一个二叉树结点结构体
typedef int ElemTpye;
typedef struct TreeNode
{
ElemTpye data;
struct TreeNode* left;
struct TreeNode* right;
}TreeNode;
//创建结点
TreeNode* createTreenode(ElemTpye data)
{
TreeNode* newnode = (TreeNode*)malloc(sizeof(TreeNode));
assert(newnode);
newnode->data = data;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
//前序遍历 根左右
void preOrderTraversal(TreeNode* root)
{
if (root == NULL)
{
return;
}
printf("%d ", root->data);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
//中序遍历 左根右
void inOrderTraversal(TreeNode* root)
{
if (root == NULL)
{
return;
}
inOrderTraversal(root->left);
printf("%d ", root->data);
inOrderTraversal(root->right);
}
//后序遍历 左右根
void postOrderTraversal(TreeNode* root)
{
if (root == NULL)
{
return;
}
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printf("%d ", root->data);
}
//层序遍历
void levelOrderTraversal(TreeNode* root)
{
if (root == NULL)
{
return;
}
//设置一个队列(先进先出)
TreeNode* queue[100];
int front = 0, rear = 0;//头尾指针
queue[rear++] = root;
while (front < rear)
{
TreeNode* current = queue[front++];
printf("%d ", current->data);
if (current->left!= NULL)
{
queue[rear++] = current->left;
}
if (current->right != NULL)
{
queue[rear++] = current->right;
}
}
}
//释放二叉树空间
void freeTree(TreeNode* root)
{
if (root == NULL)
{
return;
}
free(root->left);
free(root->right);
free(root);
}
int main()
{
TreeNode* root = NULL;
root = createTreenode(1);
root->left = createTreenode(2);
root->right = createTreenode(3);
root->left->left = createTreenode(4);
root->left->right = createTreenode(5);
root->right->left = createTreenode(6);
root->right->right = createTreenode(7);
printf("前序遍历如下\n");
preOrderTraversal(root);
printf("\n");
printf("中序遍历如下\n");
inOrderTraversal(root);
printf("\n");
printf("后序遍历如下\n");
postOrderTraversal(root);
printf("\n");
printf("层次遍历如下\n");
levelOrderTraversal(root);
printf("\n");
freeTree(root);
return 0;
}
二叉树的前序遍历,中序遍历,后序遍历以及层次遍历(递归方式+C语言代码)
最新推荐文章于 2024-09-28 22:05:59 发布