0
点赞
收藏
分享

微信扫一扫

输入二叉树先序序列,输出先序,中序,后序序列


/*====================================================
程序功能:输入二叉树先序序列,输出先序,中序,后序序列
作者:令狐荣豪
完成日期:2019/5/19
=====================================================*/
#include<stdio.h>
#include<stdlib.h>

typedef struct BiTNode
{
char data;//定义二叉链表的结构体
struct BiTNode *lchild, *rchild;
}Bitree;

Bitree *CreateBtree_DLR(Bitree* root);//以先序遍历二叉树
void PreOrder(Bitree* T);//先序遍历二叉树
void InOrder(Bitree *T);//中序遍历二叉树
void PostOrder(Bitree *T);//后序遍历二叉树


/*================================
函数功能:构建二叉树
=================================*/
Bitree* CreateBtree_DLR(Bitree* root)
{
char ch;
scanf("%c", &ch);
if (ch == '@')
root = NULL;
else
{
root = (Bitree*)malloc(sizeof(Bitree));
root->data = ch;
root->lchild = CreateBtree_DLR(root->lchild);//构造左子树
root->rchild = CreateBtree_DLR(root->rchild);//构造右子树
}
return (root);
}

/*==================================
函数功能:先序遍历递归算法
函数输入:树的根结点
===================================*/
void PreOrder(Bitree *T)
{
if (T != NULL)
{
printf("%c", T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}

/*==================================
函数功能:中序遍历
===================================*/
void InOrder(Bitree *T)
{
if (T != NULL)
{
InOrder(T->lchild);
printf("%c", T->data);
InOrder(T->rchild);
}
}

/*=================================
函数功能:后序遍历
==================================*/
void PostOrder(Bitree *T)
{
if (T != NULL)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}

int main()
{
Bitree *T = NULL;
printf("输入二叉树的先序遍历结点,建立二叉树。(子树为空时输入@)\n");
T = CreateBtree_DLR(T);

printf("\n先序遍历结果:\n");
PreOrder(T);
printf("\n中序遍历结果:\n");
InOrder(T);
printf("\n后序遍历的结果:\n");
PostOrder(T);
return 0;
}


举报

相关推荐

二叉树的先序 中序 后序遍历

0 条评论