一、定义二叉链表
//定义二叉链表
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
二、先、中、后续遍历方法
//先续遍历
void PreOrder(BiTree T){
if(T!=NULL){
printf("%d、",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
};
//中续遍历
void MiddleOrder(BiTree T){
if(T!=NULL){
MiddleOrder(T->lchild);
printf("%d、",T->data);
MiddleOrder(T->rchild);
}
};
//后续遍历
void PostOrder(BiTree T){
if(T!=NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%d、",T->data);
}
};
三、下面为整体运行代码
#include <stdio.h>
#include <stdlib.h>
//定义二叉链表
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先续遍历
void PreOrder(BiTree T){
if(T!=NULL){
printf("%d、",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
};
//中续遍历
void MiddleOrder(BiTree T){
if(T!=NULL){
MiddleOrder(T->lchild);
printf("%d、",T->data);
MiddleOrder(T->rchild);
}
};
//后续遍历
void PostOrder(BiTree T){
if(T!=NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%d、",T->data);
}
};
int main () {
//定义一个空二叉树
BiTree root = NULL;
//初始化
root = (BiTree) malloc(sizeof(BiTNode));
root->data = 1;
root->lchild = NULL;
root->rchild = NULL;
printf("根节点data=%d\n",root->data);
//将2插入到左孩子;
BiTNode * p1 = (BiTNode *)malloc(sizeof(BiTNode));
p1->data = 2;
p1->lchild = NULL;
p1->rchild = NULL;
root->lchild = p1;
printf("根节点左孩子data=%d\n",root->lchild->data);
//将3插入到又孩子;
BiTNode * p2 = (BiTNode *)malloc(sizeof(BiTNode));
p2->data = 3;
p2->lchild = NULL;
p2->rchild = NULL;
root->rchild = p2;
printf("根节点右孩子data=%d\n",root->rchild->data);
//先续遍历
printf("先续遍历:\n");
PreOrder(root);
printf("\n");
//中续遍历
printf("中续遍历:\n");
MiddleOrder(root);
printf("\n");
//后续遍历
printf("后续遍历:\n");
PostOrder(root);
printf("\n");
return 0;
}
end~~希望对您有帮助~记得点赞收藏哟~