【数据结构】二叉树功能实现:先序遍历、中序遍历、后序遍历及层次遍历。
二叉树功能实现:先序遍历、中序遍历、后序遍历及层次遍历。
·
问题描述:二叉树顺序遍历(先序、中序、后序)及层次遍历的实现。
代码实现:
实现顺序遍历需要三个文件(三个文件在同一目录)。
tree.h(定义二叉树)
tree.c(实现接口函数)
main.c(主函数实现)
tree.h
主要定义二叉树结点结构体struct node_t;
创建二叉树函数bitree *tree_create();
先序遍历函数void preorder(bitree *r);
中序遍历函数void inorder(bitree *r);
后序遍历函数void postorder(bitree *r);
层次遍历函数void layerorder(bitree *r);
typedef char data_t;
typedef struct node_t {
data_t data;
struct node_t *left;
struct node_t *right;
} bitree;
bitree *tree_create();
void preorder(bitree *r);
void inorder(bitree *r);
void postorder(bitree *r);
void layerorder(bitree *r);
tree.c
实现上述函数。
#include <stdio.h>
#include <stdlib.h>
#include "linkqueue.h"
bitree *tree_create() {
data_t ch;
bitree *r;
scanf("%c", &ch);
if (ch == '#')
return NULL;
if ((r = (bitree *) malloc(sizeof(bitree))) == NULL) {
printf("malloc failed\n");
return NULL;
}
r->data = ch;
r->left = tree_create();
r->right = tree_create();
return r;
}
void preorder(bitree *r) {
if (r == NULL) {
return;
}
printf("%c", r->data);
preorder(r->left);
preorder(r->right);
}
void inorder(bitree *r) {
if (r == NULL) {
return;
}
inorder(r->left);
printf("%c", r->data);
inorder(r->right);
}
void postorder(bitree *r) {
if (r == NULL) {
return;
}
postorder(r->left);
postorder(r->right);
printf("%c", r->data);
}
void layerorder(bitree * r){
linkqueue *lq;
if ((lq = queue_create()) == NULL)
return;
if (r == NULL)
return;
printf("%c", r->data);
enqueue(lq, r);
while (!queue_empty(lq)) {
r = dequeue(lq);
if (r->left){
printf("%c", r->left->data);
enqueue(lq, r->left);
}
if (r->right) {
printf("%c", r->right->data);
enqueue(lq, r->right);
}
}
}
main.c
实现创建二叉树,先序遍历函数、中序遍历函数、后序遍历函数,层次遍历函数。
#include "tree.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[]) {
bitree *r;
if ((r = tree_create()) == NULL)
return -1;
preorder(r);
puts("");
inorder(r);
puts("");
postorder(r);
puts("");
layerorder(r);
return 0;
}
运行结果:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)