第一种:前序遍历
void bt_pre_order_traverse(btree tree) {
if (tree != NULL) {
printf("%c->", tree->data);
bt_pre_order_traverse(tree->lchild);
bt_pre_order_traverse(tree->rchild);
}
}
第二种:后序遍历
void bt_post_order_traverse(btree tree) {
if (tree != NULL) {
bt_mid_order_traverse(tree->lchild);
bt_mid_order_traverse(tree->rchild);
printf("%c->", tree->data);
}
}
第三种:中序遍历
void bt_mid_order_traverse(btree tree) {
if (tree != NULL) {
bt_mid_order_traverse(tree->lchild);
printf("%c->", tree->data);
bt_mid_order_traverse(tree->rchild);
}
}
第四种:层次遍历(通过使用队列实现)
void bt_traverse_by_level(btree tree) {
if (tree != NULL) {
btree p;
btree qu[MAX_SIZE];
int front;
int rear;
front = rear = -1;
rear++;
qu[rear] = tree;
while (front != rear) {
front = (front + 1) % MAX_SIZE;
p = qu[front];
printf("%c->", p->data);
if (p->lchild != NULL) {
rear = (rear + 1) % MAX_SIZE;
qu[rear] = p->lchild;
}
if (p->rchild != NULL) {
rear = (rear + 1) % MAX_SIZE;
qu[rear] = p->rchild;
}
}
}
}
void bt_pre_order_traverse(btree tree) {
if (tree != NULL) {
printf("%c->", tree->data);
bt_pre_order_traverse(tree->lchild);
bt_pre_order_traverse(tree->rchild);
}
}
第二种:后序遍历
void bt_post_order_traverse(btree tree) {
if (tree != NULL) {
bt_mid_order_traverse(tree->lchild);
bt_mid_order_traverse(tree->rchild);
printf("%c->", tree->data);
}
}
第三种:中序遍历
void bt_mid_order_traverse(btree tree) {
if (tree != NULL) {
bt_mid_order_traverse(tree->lchild);
printf("%c->", tree->data);
bt_mid_order_traverse(tree->rchild);
}
}
第四种:层次遍历(通过使用队列实现)
void bt_traverse_by_level(btree tree) {
if (tree != NULL) {
btree p;
btree qu[MAX_SIZE];
int front;
int rear;
front = rear = -1;
rear++;
qu[rear] = tree;
while (front != rear) {
front = (front + 1) % MAX_SIZE;
p = qu[front];
printf("%c->", p->data);
if (p->lchild != NULL) {
rear = (rear + 1) % MAX_SIZE;
qu[rear] = p->lchild;
}
if (p->rchild != NULL) {
rear = (rear + 1) % MAX_SIZE;
qu[rear] = p->rchild;
}
}
}
}
转载于:https://blog.51cto.com/wujuxiang/421968