#include<stdio.h>
#include<stdlib.h> // malloc() 函数的头文件
typedef int TElemType;
typedef struct BiTNode
{
TElemType data; // 所建链表结点结构
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void Createbitree(BiTNode *&p1) // 二叉树建立 先序形成(特别要注意输入方式)
{
int b;
BiTNode *p;
scanf("%d",&b);
if (b == 0) return;
p = (BiTNode *)malloc(sizeof (BiTNode)); // p为结构体指针 指向一个新生成的结构体
p->data = b;
p->lchild = NULL;
p->rchild = NULL;
p1 = p;
Createbitree(p->lchild);
Createbitree(p->rchild);
return;
}
void InOrderTraverse(BiTNode *p1) // 中序遍历
{
if (p1)
{
InOrderTraverse(p1->lchild);
printf("%d ",p1->data);
InOrderTraverse(p1->rchild);
}
}
void InOrderTraverse1(BiTNode *p1) // 后序遍历
{
if (p1)
{
InOrderTraverse1(p1->lchild);
InOrderTraverse1(p1->rchild);
printf("%d ", p1->data);
}
}
void InOrderTraverse2(BiTNode *p1) // 先序遍历
{
if (p1)
{
printf("%d ", p1->data);
InOrderTraverse2(p1->lchild);
InOrderTraverse2(p1->rchild);
}
}
int main()
{
BiTNode *p1 = NULL;
printf(" /************请按先序形成输入该节点值,如果输入0表示该节点为空!请一定注意不要乱输入不然出不来了不要找我哦。。。。呵呵!*************/\n\n");
printf("先序输入值:");
Createbitree(p1); // 二叉树建立 先序形成 p1 为树根
printf("\n");
printf("中序遍历结果:");
InOrderTraverse(p1); // 中序遍历
printf("\n\n");
printf("后序遍历结果:");
InOrderTraverse1(p1); // 后序遍历
printf("\n\n");
printf("先序遍历结果:");
InOrderTraverse2(p1); // 先序遍历
printf("\n\n");
return 0;
}
// 输入例子: 1 2 4 0 0 5 0 0 3 6 0 0 7 0 0
//
// 结构图 1
// / \
// 2 3
// / \ / \
// 4 5 6 7
二叉树(含先序中序后序遍历)
最新推荐文章于 2021-04-04 22:41:15 发布