#include <iostream>
using namespace std;
struct tree
{
int data;
struct tree *left;
struct tree *right;
};
typedef struct tree Tree;
//创建二叉树
Tree *CreateTree(int a[], int len)
{
Tree *node[100] = {0};
for (int i = 0; i < len; i++)
{
node[i] = (Tree *)malloc(sizeof(Tree));
if (NULL == node[i])
{
return;
}
node[i]->data = a[i];
node[i]->left = NULL;
node[i]->right = NULL;
}
for (int i = 0; i < len/2; i++)
{
node[i]->left = node[2*i + 1];
node[i]->right = node[2*i + 2];
}
return node[0];
}
//先序遍历
void PreOrder(Tree *root)
{
if (root == NULL)
return;
printf("%d ", root->data);
PreOrder(root->left);
PreOrder(root->right);
}
//中序遍历
void MidOrder(Tree *root)
{
if (root == NULL)
return;
MidOrder(root->left);
printf("%d ", root->data);
MidOrder(root->right);
}
//后续遍历
void BackOrder(Tree *root)
{
if (root == NULL)
return;
BackOrder(root->left);
BackOrder(root->right);
printf("%d ", root->data);
}
int main()
{
int data[10] = {0};
Tree *root;
printf("请输入信息:\n");
for (int i = 0; i < 10; i++)
{
scanf("%d", &data[i]);
}
root = CreateTree(data, sizeof(data) / sizeof(data[0]));
printf("先序:\n");
PreOrder(root);
printf("\n");
printf("中序:\n");
MidOrder(root);
printf("\n");
printf("后序:\n");
BackOrder(root);
printf("\n");
}
二叉树的三种遍历方式
最新推荐文章于 2022-04-21 20:53:08 发布