数据结构:c++高级数据结构:二叉树的创建

二叉树的创建:

#方法创建树:

 3用遍历方法遍历出一颗树。如果叶子节点上是空的话,就补上#号如下图所示:

  • 先序遍历:124###3##
  • 中序遍历:#4#2#1#3#
  • 后序遍历:##4#2##31

代码实现: 

BiTNode * CreateBiThrTree(BiTNode * T)
{
   //创建
   BiTNode *node = NULL;
   BiTNode *pL = NULL;
   BiTNode *PR = NULL; 

   char h;
   scans("%c",&h);

   if(h=='#')
   {
     return NULL;
   }
   else
   {
      node = (BiTNode *)malloc(sizeof(BiTNode));
      memset(node,0,sizeof(BiTNode)); 
      node->data = h;
  
      
      CreateBiThrTree(T->lchild);//递归构造左子树
      if(PL != NULL)
      {
         node ->lchild = PL;
      }
      else
      {
         node->lchild = NULL;
      }
      CreateBiThrTree(T->rchild);//递归构造右子树
         if(PR != NULL)
      {
         node ->Rchild = PR;
      }
      else
      {
         node->Rchild = NULL;
      }
      
   } 
   return node;
}


int main()
{
   BiTNode t1,t2,t3,t4,t5;
   memset(&t1,0,sizeof(BiTNode));
   memset(&t2,0,sizeof(BiTNode));
   memset(&t3,0,sizeof(BiTNode));
   memset(&t4,0,sizeof(BiTNode));
   memset(&t5,0,sizeof(BiTNode));
   t1.data = 1;
   t2.data = 2;
   t3.data = 3;
   t4.data = 4;
   t5.data = 5;

   //建立关系
   t1.lchild = &t2;
   t1.rchild = &t3;
   t2.lchild = &t4;
   t3.lchild = &t5;
   
   //作用域
   //可以添加临时的指针变量
   [
   BiTNode * p = NULL;
    p = CreateBiThrTree(p);
   
   ]
   //树的遍历
   printf("%d\n",Depth(&t1));
   [
       BiTNode *root = CoptTree(&t1);//生成一颗新树
       printf("Copy inorder\n");
       inOrder(root);
       printf("hello....\n");
   ]

   printf("older inorder\n");
   inOrder(&t1);
   printf("hello....\n");
    
   return;  
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值