二叉链表的结点类型定义如下:
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;
前序遍历(DLR):若二叉树为空,则空操作;否则:1、访问根节点 2、先序遍历根节点的左子树 3、先序遍历根节点的右子树
//先序遍历二叉树的递归算法 ,Visit()是对数据操作的应用函数
void PreOrderTraverse(BiTNode * T)
{//
if (T)
{
Visit(T->data);//访问根节点
PreOrderTraverse(T->lchild);// 先序遍历左子树
PreOrderTraverse(T->rchild);//先序遍历右子树
}
}
中序遍历(LDR):若二叉树为空,则空操作;否则:1、中序遍历根节点的左子树 2、访问根节点3、中序遍历根节点的右子树
//中序遍历二叉树的递归算法 ,Visit()是对数据操作的应用函数
void InOrderTraverse(BiTNode * T)
{//
if (T)
{
InOrderTraverse(T->lchild);// 先序遍历左子树
Visit(T->data);//访问根节点
InOrderTraverse(T->rchild);//先序遍历右子树
}
}
后序遍历(LRD):若二叉树为空,则空操作;否则:1、后序遍历根节点的左子树 2、后序遍历根节点的右子树 3、访问根节点
//后序遍历二叉树的递归算法 ,Visit()是对数据操作的应用函数
void PostOrderTraverse(BiTNode * T)
{//
if (T)
{
PostOrderTraverse(T->lchild);// 先序遍历左子树
PostOrderTraverse(T->rchild);//先序遍历右子树
Visit(T->data);//访问根节点
}
}