#include <stdio.h>
#include <stdlib.h>
#include "bitree.h"

TElemType Nil='#';


void visit(TElemType s)
{
    printf("%c,",s);       
}
void input(TElemType &s)
{     
    scanf("%c",&s);    
}

void InitBiTree(BiTree &T)
 { /* 操作结果:构造空二叉树T */
   T=NULL;
 }
 
void CreateBiTree(BiTree &T)
{  //按先序次序输入二叉树中结点的值
   // 构造二叉链表表示的二叉树T。变量Nil表示空(子)树。
  /********** Begin **********/ 
  TElemType e;
  scanf("%c",&e);
  if(e=='#')
  T=NULL;
  else{
     T=(BiTree)malloc(sizeof(BiTNode));
     T->data=e;
     CreateBiTree(T->lchild);
     CreateBiTree(T->rchild);
  }
  /********** End **********/
}
 int  BiTreeEmpty(BiTree T)
 { // 初始条件:二叉树T存在。操作结果:若T为空二叉树,则返回TRUE,否则FALSE
    /********** Begin **********/ 
   if(T)
   return FALSE;
   else
   return TRUE;
   /********** End **********/
}
void ProOrderTraverse(BiTree T,void(*Visit)(TElemType))
{ // 采用二叉链表存储结构,Visit是对数据元素操作的应用函数。
   // 先序遍历二叉树T的递归算法,对每个数据元素调用函数Visit
    /********** Begin **********/ 
    if(T) 
   {
     Visit(T->data);                  
      ProOrderTraverse(T->lchild,Visit);    
      ProOrderTraverse(T->rchild,Visit);   
   }
    
    /********** End **********/
 }
void InOrderTraverse(BiTree T,void(*Visit)(TElemType))
{ // 采用二叉链表存储结构,Visit是对数据元素操作的应用函数。
   // 中序遍历二叉树T的递归算法,对每个数据元素调用函数Visit
    /********** Begin **********/ 
   if(T)
   {
                      
      InOrderTraverse(T->lchild,Visit);  
      Visit(T->data); 
      InOrderTraverse(T->rchild,Visit);     
   }
    
   /********** End **********/
 }
void PostOrderTraverse(BiTree T,void(*Visit)(TElemType))
{ // 初始条件:二叉树T存在,Visit是对结点操作的应用函数
   // 操作结果:后序递归遍历T,对每个结点调用函数Visit一次且仅一次
    /********** Begin **********/ 
    if(T) 
   {
      PostOrderTraverse(T->lchild,Visit);    
      PostOrderTraverse(T->rchild,Visit);
      Visit(T->data);     
   }
    
     /********** End **********/
}
void DestoryBiTree(BiTree &T)
{  // 初始条件:二叉树T存在。操作结果:销毁二叉树T
    /********** Begin  **********/
   if(T) // T不空
   {
      
      DestoryBiTree(T->lchild);   
      DestoryBiTree(T->rchild);
      free(T);   
   }
   
    /********** End **********/
}
posted on 2024-06-20 17:41  findscripter  阅读(19)  评论(0)    收藏  举报