⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 out< "please input the number of the nodes"<<endl cin>>nodesNum cout<<"pl
💻
字号:
/二叉树的抽象数据类型
#include "Stack.h"   //关于二叉树的信息都放在这个头文件中。

//--------基本操作的函数原型说明---------------

//--按照先序序列构造二叉链表表示的二叉树T----
short CreateBiTree(BiTree &T){
//按照先序次序输入的二叉树中结点的值,#表示空树。
//按照其他遍例方式行不通或则很复杂。
	TElemType c;
	cout<<"请输入按照先序次序输入的二叉树的当前结点值"<<endl;
	cin>>c;
	if(c=='#') 
		T=NULL;
	else{
		T=(BiNode *)malloc(sizeof(BiNode));
		if(!T) return ERROR;
		T->data=c;              //生成根节点
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild);
	}//if
	return OK;
}//CreateBiTree

//----先序遍例的递归实现----
void LoopPreOrder(BiTree T,void (* visit)(TElemType e)){
	if(T){
		 (* visit)(T->data);
         LoopPreOrder(T->lchild,visit);
		 LoopPreOrder(T->rchild,visit);
	}//if
}//LoopPreOrder

//----中序编例的递归实现----
void LoopInOrder(BiTree T,void (* visit)(TElemType e)){
	if(T){
		LoopInOrder(T->lchild,visit);
		(* visit)(T->data);
		LoopInOrder(T->rchild,visit);
	}//if
}//LoopInorder

//----后序编例的递归实现---
void LoopPostOrder(BiTree T,void (* visit)(TElemType e)){
	if(T){
		LoopPostOrder(T->lchild,visit);
        LoopPostOrder(T->rchild,visit);
		(* visit)(T->data);
	}//if
}//LoopPostOrder

//----先序遍例的非递归实现---
void PreOrder(BiTree T,void (* visit)(TElemType e)){
     BiTree p=T;//工作指针初试指向二叉树根结点。
	 SqStack S;//声明辅助栈。
	 InitStack(S);//栈的初试化。
	 while(p||!StackEmpty(S)){
		 if(p){//如果p不空
			 (* visit)(p->data);//访问p指向的结点。
			 Push(S,p); //将p入栈。
			 p=p->lchild;//p指向左孩子。
		 }//if
		 else{ //如果p空
             Pop(S,p);//退栈,栈顶赋给p
             p=p->rchild;
		 }//else
	 }//while
}//preOrder

//----中序遍例的非递归实现-----
void InOrder(BiTree T,void (* visit)(TElemType e)){
     BiTree p=T;//工作指针初试指向二叉树根结点。
	 SqStack S;//声明辅助栈。
	 InitStack(S);//栈的初试化。
     while(p||!StackEmpty(S)){
		 if(p){
			 Push(S,p);
			 p=p->lchild;
		 }//if
		 else{
			 Pop(S,p);
			 (* visit)(p->data);
			 p=p->rchild;
		 }//else
	 }//while
}//InOrder

//---

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -