您的位置:首页 > 其它

二叉树的建立,从动态二叉链表转化为静态二叉链表

2016-11-30 23:20 357 查看
动态二叉链表

typedef char
4000
ElemType;

typedef  struct BiNode

{

ElemType data;

struct  BiNode *lchild;   

struct BiNode *rchild;

}BiNode,*Bitree;

typedef struct

{

ElemType data;

  int lchild;

int rchild;

}BiTr;

热茶树的建立采用递归的方法

void createBiTree(BiTree &T)

{

   ElemType ch='0';

      printf("请输入字符!\n");

      if(!flag)

        {

    ch=getchar();

   getchar();

        }

        else

        {

     printf("结束输入\n");

         T=NULL;

         return;

        }

   if(ch=='#')

   {

     flag=1;

    T=NULL;

    return ;

   }

   else

   {

 T=(BiTree)malloc(sizeof(BiTNode));

  if(T==NULL)

   {

      printf("系统空间不足\n");

      exit(-1);

   }

      T->data=ch;

      createBiTree(T->lchild);

      printf("-------------------------\n");

      createBiTree(T->rchild);

   }

}

静态二叉树的建立通过遍历动态二叉树来建立

二叉树转化函数

 void turn(BiTree &T1,BiTr &T2,int i)

  {

        int t=i;

        if(T1)

        {

    T2[t].data=T1->data;

    if(T1->lchild==NULL)

        T2[t].lchild=0;

      else

   T2[t].lchild=++tg;

  if(T1->rchild==NULL)

     T2[t].rchild=0;

     else

   T2[t].rchild=++tg;

    if(T1->lchild!=NULL)

    turn(T1->lchild,T2,i+1);

     if(T1->rchild!=NULL)

    turn(T1->rchild,T2,i+1);

        }

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐