#include<iostream>
#define maxnum 100
using namespace std;
typedef struct BTNode {
char data;
struct BTNode* lchild;
struct BTNode* rchild;
}BTNode;
void visite(BTNode* P)
{
cout << P->data;
}
//前序遍歷
void preorder(BTNode* P)
{
if (P != NULL)
{
visite(P);
preorder(P->lchild);
preorder(P->rchild);
}
}
//中序遍歷
void inorder(BTNode* P)
{
if (P != NULL)
{
inorder(P->lchild);
visite(P);
inorder(P->rchild);
}
}
//后序遍歷
void postorder(BTNode* P)
{
if (P != NULL)
{
postorder(P->lchild);
postorder(P->rchild);
visite(P);
}
}
//層次遍歷
void level(BTNode* p)
{
int front, rear;
BTNode* que[maxnum];
front = rear = 0;
BTNode* q;
if (p != NULL)
{
rear = (rear + 1) % maxnum;
que[rear]=p;
while (front != rear)
{
front=(front+1) % maxnum;
q=que[front];
visite(q);
if (q->lchild != NULL)
{
rear = (rear + 1) % maxnum;
que[rear] = q->lchild;
}
if (p->rchild != NULL)
{
rear = (rear + 1) % maxnum;
que[rear]=q->rchild;
}
}
}
}
int main()
{
BTNode* node1 = new BTNode;
BTNode* node2 = new BTNode;
BTNode* node3 = new BTNode;
BTNode* node4 = new BTNode;
BTNode* node5 = new BTNode;
node1->data = 'A';
node1->lchild = node2;
node1->rchild = node3;
node2->data = 'B';
node2->lchild = NULL;
node2->rchild = NULL;
node3->data = 'C';
node3->lchild = node4;
node3->rchild = node5;
node4->data = 'E';
node4->rchild = NULL;
node4->lchild = NULL;
node5->data = 'D';
node5->lchild = NULL;
node5->rchild = NULL;
cout << "大根子請輸入你想選擇的順序二叉樹排序"<<endl;
cout << "1:先序排序 2:中序排序 3:后序排序 4:層次遍歷" << endl;
int gengzi;
cin >> gengzi;
switch (gengzi)
{
case 1:
cout << "大根子你選擇的前序遍歷為:";
preorder(node1);
break;
case 2:
cout << "大根子你選擇的中序遍歷為:";
inorder(node1);
break;
case 3:
cout << "大根子你選擇的中序遍歷為:";
postorder(node1);
break;
case 4:
cout << "大根子你選擇的層次遍歷為:";
level(node1);
break;
default:
cout << "大根子你在亂按什么啊!!!";
}
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/210246.html
標籤:C++ 語言
上一篇:萌新駕到
