该文件用于创建一颗链表二叉树,测试创建二叉树,先序、中序、后序三种遍历方式
创建二叉树代码如下:
#define _CRT_SECURE_NO_WARNINGS
#define TYPE char
struct biTree {
TYPE data;
struct biTree *lchild;
struct biTree *rchild;
};
#include <stdio.h>
#include <stdlib.h>
biTree *create(biTree *T) {//这里我们采用先序创建一颗二叉树
char data;
printf("请输入当前节点值:data=");
scanf("%c",&data);
getchar();
if (data != '#') {
T = (biTree *)malloc(sizeof(biTree));
T->data = data;
T->lchild = NULL;
T->rchild = NULL;
T->lchild = create(T->lchild);
T->rchild = create(T->rchild);
}
return T;
}
//中序递归遍历
void inOrder(biTree *T) {
if (T!=NULL) {
inOrder(T->lchild);
printf("%c ",T->data);
inOrder(T->rchild);
}
}
//先序递归遍历
void preOrder(biTree *T) {
if (T != NULL) {
printf("%c ", T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}
//后序递归遍历
void postOrder(biTree *T) {
if (T != NULL) {
postOrder(T->lchild);
postOrder(T->rchild);
printf("%c ", T->data);
}
}
测试代码如下:
struct biTree {
char data;
struct biTree *lchild;
struct biTree *rchild;
};
#include <stdio.h>
#include <stdlib.h>
int main() {
struct biTree *T = (struct biTree*)malloc(sizeof(struct biTree));
biTree *create(biTree*);
void preOrder(biTree*);
void inOrder(biTree*);
void postOrder(biTree*);
T=create(T);
preOrder(T);
printf("\n");
inOrder(T);
printf("\n");
postOrder(T);
return 0;
}
努力是为了站在万人中央成为别人的光。