A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周易 中级黑马   /  2014-8-22 21:40  /  952 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Tree CreateTree(Tree T){  
    // 按先后次序输入二叉树中结点的值(一个字符),空格表示空树      // 构造二叉链表表示的二叉树T  
    char ch;  
   scanf("%c",&ch);  
    if(ch=='#') T=NULL;  
    else{  
        if(!(T=(TNode *)malloc(sizeof(TNode))))  
            exit(OVERFLOW);  
        T->data=ch;                 // 生成根节点  
        T->lchild=CreateTree(T->lchild);    // 构造左子树  
        T->rchild=CreateTree(T->rchild);    // 构造右子树  
    }  
    return T;  
}  
  
Status FirstRecursionTraverse(Tree T,Status (*Visit)(ElemType e))  
{   // 先序遍历递归算法  
  
    if(T){  
        if(!Visit(T->data)) return ERROR;  
        FirstTraverse(T->lchild,Visit);  
        FirstTraverse(T->rchild,Visit);      
}  
    return OK;  
}  
  
Status MidTraverse(BiTree T,Status (*Visit)(ElemType e))  
{   // 中序遍历递归算法  
    if(T){  
        MidTraverse(T->lchild,Visit);  
        if(!Visit(T->data)) return ERROR;;  
       MidTraverse(T->rchild,Visit);  
   }  
return OK;  
}  

Status LaterTraverse(BiTree T,Status (*Visit)(ElemType e))  
{   //后序遍历递归算法  
   if(T){  
        LaterTraverse(T->lchild,Visit);  
        LaterTraverse(T->rchild,Visit);  
        if(!Visit(T->data)) return ERROR;;  
   }  
    return OK;  
}  
学了指针,想起之前学过的数据结构,利用所学的东西 也顺便练练手!

2 个回复

正序浏览
自己想的还是复制黏贴的,辛苦了
回复 使用道具 举报
灵活利用递归可以解决很多问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马