#include <STDIO.H>
#include <STDLIB.H>
#define OK 1
#define OVERFLOW -2
#define ERROR 0
typedef int TElemType;
typedef int Status;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
Status CreateBiTree(BiTNode **); //建立二叉链表
Status PreOrderTraverse( BiTNode * ); //前序遍历
Status InOrderTraverse( BiTNode * ); //中序遍历
Status PostOrderTraverse( BiTNode * ); //后序遍历
Status PrintElement(TElemType);
int main()
{
BiTNode * T = NULL;
CreateBiTree( &T );
PreOrderTraverse( T );
printf("\n");
InOrderTraverse( T );
printf("\n");
PostOrderTraverse( T );
printf("\n");
return 0;
}
Status CreateBiTree( BiTNode ** T )
{
char ch;
scanf("%c" , &ch);
if (ch == '#')
(*T) = 0;
else
{
if ( !( (*T) = (BiTNode * ) malloc (sizeof ( BiTNode )) )) exit(OVERFLOW);
(*T)->data = ch;
CreateBiTree( &((*T)->lchild ));
CreateBiTree( &((*T)->rchild ));
}
return OK;
}
Status PreOrderTraverse( BiTNode * T)
{
if ( T )
{
if (PrintElement( T->data ))
if( PreOrderTraverse( T->lchild ))
if( PreOrderTraverse( T->rchild ))
return OK;
return ERROR;
}
else
return OK;
}
Status InOrderTraverse( BiTNode * T)
{
if ( T )
{
if ( InOrderTraverse( T->lchild ))
if( PrintElement( T->data ))
if( InOrderTraverse( T->rchild ))
return OK;
return ERROR;
}
else
return OK;
}
Status PostOrderTraverse( BiTNode * T)
{
if ( T )
{
if ( PostOrderTraverse( T->lchild ))
if( PostOrderTraverse( T->rchild ))
if( PrintElement( T->data ))
return OK;
return ERROR;
}
else
return OK;
}
Status PrintElement( TElemType e)
{
printf("%c" , e);
return OK;
}
比如建立下图所示的二叉树,则输入为:-+A##*B##-C##D##/E##F##
分享到:
相关推荐
数据结构遍历二叉树算法(前序、中序、后序),C语言版程序(附完成版实验报告),完全可运,供大家参考。
status PreorderTraverse(BiTree T), status(*Visit(TElemType e)){ if(T){ if(visit(T->data)) if(Preordertaverse(T->lchild,visit)) if(Preordertaverse(T->Rchild,visit)) return OK; return Error;...
数据结构非递归先序、中序、后序遍历二叉树,数据结构非递归先序、中序、后序遍历二叉树
小小学习,C语言数据结构,中序遍历二叉树非递归算法
按层次遍历二叉树,简单易懂,操作容易,结构清晰,运用c语言编程
"数据结构树和二叉树遍历二叉树和线索二叉树PPT学习教案.pptx" 本资源主要讲述了数据结构树和二叉树遍历的相关知识点,包括二叉树的基本概念、二叉树遍历的六种方案、先序、中序、后序遍历算法的实现、线索二叉树的...
编写按层次顺序(同一层自左至右)遍历二叉树的算法。 (1)二叉树采用二叉链表作为存储结构。 (2)按题集p44面题6.69所指定的格式输出建立的二叉树。 (3)输出层次遍历结果。 (4)测试用例自己设计。
二叉树的中序、前序、后序的递归、非递归遍历算法
二叉树的遍历及叶结点,结点的统计。(源程序通过上机测试)
数据结构二叉树的遍历 二叉树的深度 二叉树的某结点层次 二叉树结点数
递归遍历二叉树、c语言以及数据结构均要用到,我还会上传非递归的··
/****头文件"head.h"**********/ #include<stdio.h> #include<math.h> ...// 先序遍历二叉树T if (T) { printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } }
数据结构 上机实验2,包括深度,层次遍历二叉树,计算深度等,c++描述的源代码
数据结构实验3 二叉树层次遍历 二叉树的层次遍历
C语言数据结构实现二叉树的建立与遍历.cpp
用递归和不递归的先序,中序和后序遍历二叉树。
数据结构实用教程之二叉树,其中包含了:二叉树的定义、二叉树的递归遍历、二叉树基本操作。 数据结构实用教程之二叉树,其中包含了:二叉树的定义、二叉树的递归遍历、二叉树基本操作。 数据结构实用教程之二叉树,...
用C语言编写的遍历二叉树程序,包括先序、中序、后序、层序4总算法,完整的上机报告,报告中有程序源代码,经编译通过。
c++实现的非递归遍历二叉树,cfree运行
三种方式遍历二叉树 前序 中序 后序 cpp源文件~