UVA - 839 Binary Tree Traversals(递归)

题目链接

题意:

n组数据,每组数据由
WL(左边端点重量,为0时表示有子树,继续输入子树)
DL(左天平臂长)
WR(右边端点重量,为0时表示有子树,继续输入子树)
DR (右天平臂长)
根据力矩(力 乘 力臂)判断是否是一个平衡的天平。
在这里插入图片描述

思路:

. 第一次做的时候,给出了模型可以直接建树,深搜每一层是否平衡,过样例但是WA了。。其实这题不用建树,直接递归就行了,比建树确实省力气许多。。

递归框架

写法1

int dfs(int &w)        //注意这里要传引用改变主函数中的x,记录每一步是否平衡的情况
{
        int w1,l1,w2,l2;
        scanf(); 
        bool l=true,r=true;//初始化
        if(!w1)
        l=dfs(w1);
        if(!w2)
        r=dfs(w2);
        w=w1+w2;           //对w的修改会直接修改原变量
        if(l&&r%%w1*l1==w2*l2)
        return 1;
        else
        return 0;
        
}

写法2

int dfs()
{
     int w1,l1,w2,l2;
     scanf();
     if(!w1)
        w1=dfs();
     if(!w2)
        w2=dfs();
     if(w1*l1!=w2*l2)
        return 0;
     return w1+w2;
  
}

总结一哈~,函数传参传引用时,在函数中修改该值会修改原函数中的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值