数据结构-C:二叉树的遍历
递归和非递归算法
这里使用严书中的严格封闭定义,中序遍历递归算法
二叉树定义
typedef int Status;
typedef char ElemType; // 二叉树结点元素类型
typedef struct BiTNode{ // 二叉树结点结构
char data; // 结点数据
struct BiTNode *lchild; // 左孩子
struct BiTNode *rchild; // 右孩子
}BiTNode, *BiTree;
遍历函数原型
Status PreOrderRecursionTraverse(BiTree T, Status(*Visit)(ElemType e));
先序遍历递归实现
Status PreOrderTraverse(BiTree T,Status (*Visit)(TElemType e)){
if(T){
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit)) return OK;
return ERROR;
}else return OK;
}//PreOrderTraverse
中序遍历递归实现
Status InOrderTraverse(BiTree T,Status (*Visit)(TElemType e)){
if