前序中序后序遍历二叉树

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");
}

 

如图所示:

             

 

以上是关于前序中序后序遍历二叉树的主要内容,如果未能解决你的问题,请参考以下文章

二叉树中,啥是前序,中序。后序!

二叉树遍历问题(前序,中序,后序)

聊聊算法 • 二叉树遍历(前序中序后序层次)

前序中序后序遍历二叉树

二叉树前序中序后序遍历相互求法

二叉树前序中序后序遍历相互求法