初始为满二叉树ABCDEFG
先中后层序的代码实现
#include <cstdio>
#include <cstdlib>
#include <queue>
using namespace std;
typedef struct Node{
char data;
Node *lchild, *rchild;
}Node, *BiTree;
BiTree newNode(char v){
BiTree node = (BiTree)malloc(sizeof(BiTree));
node->data = v;
node->lchild = NULL;
node->rchild = NULL;
return node;
}
void preorder(BiTree T){
if(T == NULL) return;
printf("%c", T->data);
preorder(T->lchild);
preorder(T->rchild);
}
void inorder(BiTree T){
if(T == NULL) return;
inorder(T->lchild);
printf("%c", T->data);
inorder(T->rchild);
}
void postorder(BiTree T){
if(T == NULL) return;
postorder(T->lchild);
postorder(T->rchild);
printf("%c", T->data);
}
void layerorder(BiTree T){
queue<BiTree> q;
q.push(T);
while(!q.empty()){
BiTree temp = q.front();
q.pop();
printf("%c", temp->data);
if(temp->lchild != NULL) q.push(temp->lchild);
if(temp->rchild != NULL) q.push(temp->rchild);
}
}
int main(){
BiTree T;
T = newNode('A');
T->lchild = newNode('B'), T->rchild = newNode('C');
T->lchild->lchild = newNode('D'), T->lchild->rchild = newNode('E'), T->rchild->lchild = newNode('F'), T->rchild->rchild = newNode('G');
printf("先序遍历:");
preorder(T);
printf("\n中序遍历:");
inorder(T);
printf("\n后序遍历:");
postorder(T);
printf("\n层序遍历:");
layerorder(T);
return 0;
}