inline heights
This commit is contained in:
parent
a8af77adf0
commit
174ca78e55
@ -92,12 +92,10 @@ pub trait BinaryTreesAvl<'a>:
|
|||||||
key: Self::Key,
|
key: Self::Key,
|
||||||
tr: Self::Tree,
|
tr: Self::Tree,
|
||||||
) -> BTWrap<'a, Self, Self::Node> {
|
) -> BTWrap<'a, Self, Self::Node> {
|
||||||
let (hl, hr) = (self.height(&tl), self.height(&tr));
|
match balancing(self.height(&tl), self.height(&tr)) {
|
||||||
match balancing(hl, hr) {
|
|
||||||
Balancing::Balanced => self.try_join(tl, key, tr),
|
Balancing::Balanced => self.try_join(tl, key, tr),
|
||||||
Balancing::RightBiased => self.assume_bind(&tr, |ctx, trl, kr, trr| {
|
Balancing::RightBiased => self.assume_bind(&tr, |ctx, trl, kr, trr| {
|
||||||
let (hrl, hrr) = (ctx.height(&trl), ctx.height(&trr));
|
if ctx.height(&trl) > ctx.height(&trr) {
|
||||||
if hrl > hrr {
|
|
||||||
ctx.assume_bind(&trl, |ctx, trll, krl, trlr| {
|
ctx.assume_bind(&trl, |ctx, trll, krl, trlr| {
|
||||||
ctx.make_node((T(tl), key, T(trll)), krl, (T(trlr), kr, T(trr)))
|
ctx.make_node((T(tl), key, T(trll)), krl, (T(trlr), kr, T(trr)))
|
||||||
})
|
})
|
||||||
@ -106,8 +104,7 @@ pub trait BinaryTreesAvl<'a>:
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
Balancing::LeftBiased => self.assume_bind(&tl, |ctx, tll, kl, tlr| {
|
Balancing::LeftBiased => self.assume_bind(&tl, |ctx, tll, kl, tlr| {
|
||||||
let (hll, hlr) = (ctx.height(&tll), ctx.height(&tlr));
|
if ctx.height(&tll) < ctx.height(&tlr) {
|
||||||
if hll < hlr {
|
|
||||||
ctx.assume_bind(&tlr, |ctx, tlrl, klr, tlrr| {
|
ctx.assume_bind(&tlr, |ctx, tlrl, klr, tlrr| {
|
||||||
ctx.make_node((T(tll), kl, T(tlrl)), klr, (T(tlrr), key, T(tr)))
|
ctx.make_node((T(tll), kl, T(tlrl)), klr, (T(tlrr), key, T(tr)))
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user