1. 二叉树的创建
int createBiTree(binaryTree_pt *T)
{
eleType val;
scanf("%c", &val);
if( val == '#' ){
*T=NULL;
}else{
*T = (binaryTree_pt)malloc(sizeof(binaryTree_st));
if(!*T){
printf("%s():%d : Malloc error\n", __func__, __LINE__);
return -1;
}
memset(*T, 0, sizeof(binaryTree_st));
(*T)->data=val;
createBiTree(&(*T)->lchild);
createBiTree(&(*T)->rchild);
}
return 0;
}
2. 前序遍历
int preOrderTraverse(binaryTree_pt *T)
{
if(!T || !*T){
return -1;
}
printf("%c ", (*T)->data);
preOrderTraverse(&(*T)->lchild);
preOrderTraverse(&(*T)->rchild);
}
3. 中序遍历
int midOrderTraverse(binaryTree_pt *T)
{
if(!T || !*T){
return -1;
}
midOrderTraverse(&(*T)->lchild);
printf("%c ", (*T)->data);
midOrderTraverse(&(*T)->rchild);
}
4. 后序遍历
int postOrderTraverse(binaryTree_pt *T)
{
if(!T || !*T){
return -1;
}
postOrderTraverse(&(*T)->lchild);
postOrderTraverse(&(*T)->rchild);
printf("%c ", (*T)->data);
}
5. 头文件和main
#include<stdio.h>
#define eleType char
typedef struct node{
eleType data;
struct node *lchild;
struct node *rchild;
}binaryTree_st, *binaryTree_pt;
#include<stdio.h>
#include "binaryTree.h"
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
int ret=0;
binaryTree_pt T=NULL;
ret = createBiTree(&T);
printf("ret = %d\n",ret);
preOrderTraverse(&T);
putchar(10);
midOrderTraverse(&T);
putchar(10);
postOrderTraverse(&T);
putchar(10);
}