auto-handle height inside BalancedTrees
This commit is contained in:
parent
a897706a91
commit
2372c1a1f6
@ -67,7 +67,7 @@ fn matches_height(hl: u64, hr: u64, hp: u64) -> Result<(), BalancingError> {
|
||||
impl<'a, BT: BinaryTreesUnbalanced<'a>> BinaryTrees<'a> for BalancedTrees<BT> {
|
||||
type Node = BT::Node;
|
||||
|
||||
type Reference = BT::Reference;
|
||||
type Reference = (BT::Reference, u64);
|
||||
|
||||
type Tree = BT::Tree;
|
||||
|
||||
@ -85,8 +85,8 @@ impl<'a, BT: BinaryTreesUnbalanced<'a>> BinaryTrees<'a> for BalancedTrees<BT> {
|
||||
self.0.split(node)
|
||||
}
|
||||
|
||||
fn resolve(&self, reference: &Self::Reference) -> BTWrap<'a, Self, Self::Node> {
|
||||
let hp = self.0.height_r(reference);
|
||||
fn resolve(&self, (reference, hp): &Self::Reference) -> BTWrap<'a, Self, Self::Node> {
|
||||
let hp = *hp;
|
||||
let ctx = self.0.clone();
|
||||
Self::bind(self.0.resolve(reference), move |node| {
|
||||
let (tl, tr, _) = ctx.split(&node);
|
||||
@ -95,11 +95,11 @@ impl<'a, BT: BinaryTreesUnbalanced<'a>> BinaryTrees<'a> for BalancedTrees<BT> {
|
||||
})
|
||||
}
|
||||
|
||||
fn equal(&self, rl: &Self::Reference, rr: &Self::Reference) -> bool {
|
||||
self.0.height_r(rl) == self.0.height_r(rr) && self.0.equal(rl, rr)
|
||||
fn equal(&self, (rl, hl): &Self::Reference, (rr, hr): &Self::Reference) -> bool {
|
||||
hl == hr && self.0.equal(rl, rr)
|
||||
}
|
||||
|
||||
fn refer(&self, tree: &Self::Tree) -> Option<Self::Reference> {
|
||||
self.0.refer(tree)
|
||||
Some((self.0.refer(tree)?, self.0.height(tree)))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user