本文只说二叉树的最基本操作,建树和遍历,其他的只是后续再讲
testcase如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct biTreeNode {
int data;
struct biTreeNode *lchild, *rchild;
} *btNode;
void preorder(btNode head) {
if (head) {
preorder(head->lchild);
printf("%d\n", head->data);
preorder(head->rchild);
}
}
void inorder(btNode head) {
if (head) {
printf("%d\n", head->data);
inorder(head->lchild);
inorder(head->rchild);
}
}
void postorder(btNode head) {
if (head) {
postorder(head->lchild);
postorder(head->rchild);
printf("%d\n", head->data);
}
}
int main()
{
btNode one, two, three, four, five;
one = (btNode)malloc(sizeof(struct biTreeNode));
two = (btNode)malloc(sizeof(struct biTreeNode));
three = (btNode)malloc(sizeof(struct biTreeNode));
four = (btNode)malloc(sizeof(struct biTreeNode));
five = (btNode)malloc(sizeof(struct biTreeNode));
one->data = 1;
two->data = 2;
three->data = 3;
four->data = 4;
five->data = 5;
one->lchild = two;
one->rchild = three;
two->lchild = four;
two->rchild = five;
three->lchild = NULL;
three->rchild = NULL;
four->lchild = NULL;
four->rchild = NULL;
printf("preorder:\n");
preorder(one);
printf("\ninorder:\n");
inorder(one);
printf("\npostorder:\n");
postorder(one);
return 0;
}
运行结果如下:
preorder:
4
2
5
1
3
inorder:
1
2
4
5
3
postorder:
4
5
2
3
1