二叉树的非递归遍历及其递归遍历算法
二叉树的结构定义是一个递归的定义,在树的定义中用到了树的概念。在二叉树的一些应用中,,常常需要通过遍历二叉树获取某些元素的属性。
一:递归遍历
1.递归先序遍历
/*递归先序遍历二叉树(DLR)*/
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;
}
2.递归中序遍历
/*递归中序遍历二叉树*/
Status InOrderTraverse(BiTree T, Status(*Visit)(TELemType e)){
if (T){
if (InOrderTraverse(T->lchild, Visit)){
if (Visit(T->data)){
if (InOrderTraverse(T->rchild, Visit))return