《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例

//二叉树的顺序存储表示 
#define MAXTSIZE 100
typedef TElemtype SqBiTree[MAXTSIZE];
SqBiTree bt;

//二叉树的二叉链表存储表示
typedef struct BiTNode
{
	TElemType data;
	struct BiTNode *lchild,*rchild;
	
}BiTNode,*BiTree;
 
 //中序遍历的递归算法
void InorderTraverse(BiTree T)
{
	if(T)
	{
		InOrderTraverse(T->lchild);
		cout<<T->data;
		InOrderTraverse(T->rchild);
	 }
} 

//中序遍历的非递归算法
void InOrderTraverse(BiTree T)
{
	InitStack(S);
	p=T;
	q=new BiTNode;
	while(p||!StackEmpty(S))
	{
		if(p)
		{
			Push(S,p);
			p=p->lchild;
		}
		else
		{
			Pop(S,q);
			cout<<q->data;
			p=q->rchild;
		}
	}
 } 
 
//先序遍历的顺序建立二叉链表
void CreateBiTree(BiTree &T)
{
	cin>>ch;
	if(ch=='#') T=NULL;
	else
	{
		T=new BiTNode;
		T->data=ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild);
	}
} 

  

猜你喜欢

转载自www.cnblogs.com/chrysanthemum/p/11762542.html