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

📄 operatortree.cpp

📁 这也是一个数据结构实验的课题
💻 CPP
字号:
#include<iostream>
using namespace std;

typedef int Status;
#define OK        1
#define OVERFLOW  0
#define ERROR    -1

typedef struct BtreeNode
{
char data;
struct BtreeNode *lchild,*rchild;//左右孩子指针
}*BtreeLink;

const int MAX_SIZE=1000;//定义数组最大容量
BtreeNode *tree=NULL;
Status CreatBtree(BtreeNode **tree);
Status PreOrder(BtreeLink tree);
Status InOrder(BtreeLink tree);
Status PostOrder(BtreeLink tree);
Status LevelOrder(BtreeLink tree);
Status TreeDepth(BtreeLink tree);
	int treeNum=0;//结点数目
	int u=0,v=0;//二叉树深度
	int leavesNum=0;//叶子结点数目
    int number=0;//树的个数
Status CreatBtree(BtreeNode **tree)
{
	//按照先序输入二叉树中结点的值(字符串数据),空格表示空树
	//构造二叉链表表示的二叉树tree
 char ch;  
 cin>>ch;
 if(ch=='*') {
	 leavesNum++;
   (*tree)=NULL;
 }
else{
   if(!((*tree)=new BtreeNode)){
   exit(OVERFLOW);
   }
  (*tree)->data=ch; 
  CreatBtree(&((*tree)->lchild)); 
  CreatBtree(&((*tree)->rchild));
  treeNum++;
 }
return OK;
}

Status Visit(char ch)
{
cout<<ch<<" ";
return OK;
}

Status PreOrder(BtreeLink tree)
{//先序遍历以tree为根指针的二叉树  
if(tree){//tree=NULL时,二叉树为空树,不做任何操作 
Visit(tree->data);//通过函数指针 *Visit 访问根结点
PreOrder(tree->lchild);//先序遍历左子树//  
PreOrder(tree->rchild);//先序遍历右子树//
}
return OK;
}

Status InOrder(BtreeLink tree)//中序遍历二叉树,  tree为指向二叉树(或某一子树)根结点的指针//

⌨️ 快捷键说明

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