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 + -
显示快捷键?