paxieeuew.txt
来自「1.创建二叉树 2.输出二叉树 4.二叉树的前中后三序遍历 5.删」· 文本 代码 · 共 94 行
TXT
94 行
#include<iostream.h>
#include<math.h>
struct BiT {
char data;
BiT *lchild, *rchild;
};
BiT* CreateBiTree(int n) {
//构造二叉链表表示的二叉树T
int i, m = pow(2,n)-1;
BiT *c = new BiT[m];
for(i = 0; i < m; i++) {
c[i].data = 'A' + i;
c[i].lchild = &c[2*i+1];
c[i].rchild = &c[2*i+2];
}
for(i = pow(2,n-1)-1; i < m; i++)
c[i].lchild = c[i].rchild = NULL;
return c;
}
void PreOrderTraverse(BiT *T) {
// 先序遍历二叉树T
if (T) {
cout<<T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiT *T) {
// 中序遍历二叉树T
if (T) {
InOrderTraverse(T->lchild);
cout<<T->data;
InOrderTraverse(T->rchild);
}
}
struct Queue {
BiT *P;
Queue *next;
};
struct LinkQueue {
Queue *front; //队头指针
Queue *rear; //队尾指针
};
void InitQueue(LinkQueue *Q, BiT *T) {
Q->front = new Queue;
Q->front->P = T;
Q->rear = new Queue;
Q->front->next = Q->rear;
Q->rear->P = NULL;
}
void EnQueue(LinkQueue *Q, BiT *e) {
if(!e) return;
Q->rear->P = e;
Q->rear->next = new Queue;
Q->rear = Q->rear->next;
Q->rear->P = NULL;
}
void DeQueue(LinkQueue *Q) {
Queue *q = Q->front;
Q->front = Q->front->next;
delete q;
}
void main() {
int n;
cout<<" n = ";
cin>>n;
BiT *T = CreateBiTree(n);
do { cout<<"\n 1:先序遍历:"
"\n 2:中序遍历:"
"\n 0:退出"
"\n 选择____";
cin>>n;
switch(n) {
case 1: cout<<"\n 先序遍历: "; PreOrderTraverse(T); cout<<endl; break;
case 2: cout<<"\n 中序遍历: "; InOrderTraverse(T); cout<<endl; break;
}
}while(n);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?