//以前曾写过,仅供参考,因为这是截取部分源码,
#include "afx.h"
#include "stdio.h"
#include"iostream.h"
#include "iomanip.h"
#include
#include
typedef char ElemType; //定义二叉树结点值的类型为字符型
const int MaxLength=100; //结点个数不超过50个
typedef struct BTNode{
ElemType data;
struct BTNode *lchild,*rchild;
}BTNode,* BiTree;
void PreCreateBiTree(BiTree &T) //按先序次序输入,构造二叉树
{
char ch;
ch=getchar(); //不能用cin来输入,在cin中不能识别空格。
if(ch==' ') T=NULL;
else{
if(!(T=(BTNode *)malloc(sizeof(BTNode)))) cout<<"malloc fail!";
T->data=ch;
PreCreateBiTree(T->lchild);
PreCreateBiTree(T->rchild);
}
}
void NRInOrder(BiTree bt) //非递归的中序遍历算法
{
BiTree stack[MaxLength],p;
int top;
if (bt!=NULL)
{
top=0;
p=bt;
while(p!=NULL||top>0)
{
while(p!=NULL)
{
stack[top]=p;
top++;
p=p->lchild;
}
if (top>0)
{
top--;
p=stack[top];
cout<
p=p->rchild;
}
}
}
}
利用栈的中序遍历的二叉树非递归算法
void InOrder(BTree t)
{
PSeqStack S;
Bonde *p=t;
S=Init_SeqStack();
while( p||!Empty_SeqStack( S))
{
if (p)
{
push_SeqStack(S,P);
P=P->lchild;
}
else
{
Pop_SeqStack(S,&p);
visit(p->data);
p=p->rchild;
}
}
}
(最后就是,在你要注意输入到TC环境的时候要记得格式要对哦,还有符号要对哦.因为显示器的问题,现在做说明如下: ;为分号,大小写要分清,因为在C 语言环境中是表示不同的意思的.希望这些能够帮到你.)