前序中序后序遍历二叉树
Posted Freeloop_嘉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前序中序后序遍历二叉树相关的知识,希望对你有一定的参考价值。
/*(1) 建立一棵含有n个结点的二叉树,采用二叉链表存储
建立结点的结构体类型;
按照先序遍历法将二叉树的序列给出;
动态申请内存空间存储新结点;
建立结点间的关系;
(2) 前序(或中序、后序)遍历该二叉树*/
#include<stdio.h>
#include<malloc.h>
// char DataType;
typedef struct Node
{
char data;
struct Node *Lchild;
struct Node *Rchild;
}BiTNode,*BiTree;
BiTree Creat()
{
BiTNode *root;
// char data;
char ch;
printf("请输入:");
scanf("%c",&ch);
getchar();
if(ch==\'!\')
root=NULL;
else
{
root=(BiTNode *)malloc(sizeof(BiTNode));
root->data=ch;
root->Lchild=Creat();
root->Rchild=Creat();
}
return root;
}
void PreOrder(BiTree root)
{
if(root!=NULL)
{
printf("%c",root->data);
PreOrder(root->Lchild);
PreOrder(root->Rchild);
}
}
void InOrder(BiTree root)
{
if(root!=NULL)
{
InOrder(root->Lchild);
printf("%c",root->data);
InOrder(root->Rchild);
}
}
void PostOrder(BiTree root)
{
if(root!=NULL)
{
PostOrder(root->Lchild);
PostOrder(root->Rchild);
printf("%c",root->data);
}
}
void main()
{
BiTNode *root=NULL;
root=Creat();
printf("该树的前中后序遍历依次为:\\n");
PreOrder(root);
printf("\\n");
InOrder(root);
printf("\\n");
PostOrder(root);
printf("\\n");
}
如图所示:
以上是关于前序中序后序遍历二叉树的主要内容,如果未能解决你的问题,请参考以下文章