📄 operatortree.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 + -