二叉树的前序、中序和后序遍历
//二叉树抽象数据类型的头文件
typedef struct BiTreeNode_{
void *data;
struct BiTreeNode_ *left;
struct BiTreeNode_ *right;
}BiTreeNode;
typedef struct BiTree_{
int size;
void (*compare)(const void *key1,const void *key2);
void (*destroy)(void *data);
BiTreeNode* root;
}BiTree;
//遍历二叉树的实现函数
/* 前序遍历 */
int preorder(const BiTreeNode *node){
if(node){
//对结点的处理函数
printNode(node);
if(node->left)
if(perorder(node->left)!=0)
return -1;
if(node->right)
if(perorder(node->right)!=0)
return -1;
return 0;
}
}
/* 中序遍历 */
int inorder(const BiTreeNode *node){
if(node){
if(node->left)
if(inorder(node->left)!=0)
return -1;
//对结点的处理函数
printNode(node);
if(node->right)
if(inorder(node->right)!=0)
return -1;
return 0;
}
}
/* 后序遍历 */
int postorder(const BiTreeNode *node){
if(node){
if(node->left)
if(postorder(node->left)!=0)
return -1;
if(node->right)
if(postorder(node->right)!=0)
return -1;
//对结点的处理函数
printNode(node);
return 0;
}
}