//混用了一下c和c++(仅输入输出混用了一下,其他没有) #include#include #include using namespace std; #define MaxSize 50 //树 typedef char DataType; typedef struct tnode { DataType data; struct tnode* lchild, * rchild; }BT, * BTT; // 函数声明 BT* Create_(); // 先序创建二叉树 void cen_bianli_(BT* T); //层次遍历二叉树 void visit_(BT* p); //输出函数 void visit2(BT* T); //中序遍历二叉树 //main函数 int main() { BT* T; T = Create_(); //Create_(T); printf("中序遍历:"); visit2(T); printf("层次遍历:"); cen_bianli_(T); return 0; } //中序遍历 void visit2(BT* T) { //printf("1"); if (T != NULL) { visit2(T->lchild); printf("%c ", T->data);//cout << T->data << " "; visit2(T->rchild); } } //先序创建二叉树 BT* Create_() { BT* t; char ch; cin >> ch;//scanf("%c", &ch); getchar(); if (ch == '#') { t = NULL; } else { t = (BT*)malloc(sizeof(BT)); t->data = ch; printf("请输入%c节点的lchild节点值:", t->data); t->lchild = Create_(); printf("请输入%c节点的rchild节点值:", t->data); t->rchild = Create_(); } return t; } //纯输出函数 void visit_(BT* p) { printf("%c,", p->data);//cout << p->data << " " << endl; } //层次遍历 void cen_bianli_(BT* T) //二叉树层次遍历—核心代码 { if (!T) printf("树空!"); BTT Q[MaxSize]; int front, rear; front = rear = 0; Q[rear++] = T; BT* p = NULL; while (front < rear) { p = Q[front++]; visit_(p); if (p->lchild) Q[rear++] = p->lchild; if (p->rchild) Q[rear++] = p->rchild; } }



