关于今天老师讲的树的一些基本练习

今天老师讲了二叉树,上课听得各种听不懂呀,各种递归呀,木有办法啦。。下课自己敲来实践~\(≧▽≦)/~。。。。应了一句话人笨就要多练习。。。大哭

void Copytree(bitPtr t,bitPtr &nt)//复制一个树 
{
 if(!t) return 0;
 else{
    nt=new node;
    nt->date=t->date;
    Copttree(t->lc,nt->lc);
    Copytree(t->rc,nt->lc); 
    }
}


int Sum(bitPtr t)//求各节点的和 
{
    if(!t) return 0;
    else
      return t->date+Sum(t->lc)+Sum(t->rc);
}


void max(bitPtr t,bitptr &maxt)//求最大的节点 
{
     maxt=t;
     porder(t,maxt);
}


void porder(bitPtr t,bitPtr &mat)
{
     if(t)
     {
          if(t->date>mt->date) mt=t;
            porder(t->lc,mt);
            porder(t->rc,mt);
            
     }
}


void visit(bitPtr t,int &m,int &n)
{
     if(t)
     {
      if(t->date>0) m=m+t.date;
      else          n=n+t.date;
      visit(t->lc,m,n);
      visit(t->rc,m.n)'
      }
}


int Mul(bitPtr t)//求正、负整数结点值之和的积:
{
 m=n=0;
 visit(t,m,n);
 return m*n;   
}


void Outtree(bitPtr t)//遍历输出各层节点值 
{ if(t)
    {
     count<<n<<:t->date<<' ';
     OutTree(t->lc,n+1);
     OutTree(t->rc,n+1);
     }
}


void high(bitPtr t,int level,int &hi)
//level的初值是1,hi的初值是0 
{
     if(t)
     {
          if(level>hi) hi=level;
          high(t->lc,level+1,hi);
          high(t->rc,level+1,hi);
     }
} 


void Gethigh(bitPtr tint n,int &high,ar p,ar &path)
//n的初值是1,high的初值是o 
{
   if(t){
       p[n]=t->date;
       if(high<n) high=n;
       for(i=1;i<=n;i++) path[i]=p[i];
     }
     GetHigh(t->lc,n+1,high,p,path);
     GetHigh(t->rc,n+1,high,p,path);
                
}


int high(bitPtr t)
{
 if(!t) return 0;
 else{ 
   m=high(t->lc);
   n=high(t->rc);
     }
 return m>n? m+1:n+1;
}
int sum(bitPtr t) //二叉树结点的值为整数,求叶子结点值之和:
{
    if(!t) return 0; else
    if(!t->lc&&!t->rc) return t->date; else
    return Sum(t->lc)+Sum(t->rc);
}
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值