uva - 11688 - Rotate to root

http://uva.onlinejudge.org/external/116/11688.html

题意:给一颗二叉树,分别求出把其中一个节点旋转到根,得到的新二叉树的深度。

解析:给出递归计算公式和图解

dl:当前节点 旋转到根节点过程中,左旋次数。

dr:当前节点 旋转到根节点过程中,右旋次数。

hl:当前节点向左绕过根节点,能达到的最大深度。
hr:当前节点向右绕过根节点,能达到的最大深度。





void cal(int root,int hl,int hr,int dl,int dr){
if(!root)return;
int dL = h[l[root]];
int dR = h[r[root]];
dp[root] = 1 + max2(max2(hl,hr),max2(dl+dL,dr+dR));
cal(l[root],hl,max2(hr,1+dr+dR),dl,1+dr);
cal(r[root],max2(hl,1+dl+dL),hr,1+dl,dr);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值