BinaryTreesHeight
This commit is contained in:
parent
711221e4d8
commit
c4c279cd27
@ -126,3 +126,9 @@ pub trait BinaryTreesMutable<'a>: BinaryTreesEmpty<'a> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait BinaryTreesHeight<'a>: BinaryTrees<'a> {
|
||||||
|
fn height(&self, tree: &Self::Tree) -> u64;
|
||||||
|
|
||||||
|
fn leaf_height_error<T: 'a>(&self, height: u64) -> BTWrap<'a, Self, T>;
|
||||||
|
}
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
pub trait BinaryTreesAvl<'a>: BinaryTrees<'a> {
|
pub trait BinaryTreesAvl<'a>: BinaryTreesHeight<'a> {
|
||||||
fn height(&self, tree: &Self::Tree) -> u64;
|
|
||||||
|
|
||||||
fn leaf_height_error<T: 'a>(&self, height: u64) -> BTWrap<'a, Self, T>;
|
|
||||||
|
|
||||||
fn assume_node(&self, tree: &Self::Tree) -> BTWrap<'a, Self, Self::Node> {
|
fn assume_node(&self, tree: &Self::Tree) -> BTWrap<'a, Self, Self::Node> {
|
||||||
match self.refer(tree) {
|
match self.refer(tree) {
|
||||||
Some(reference) => self.resolve(&reference),
|
Some(reference) => self.resolve(&reference),
|
||||||
|
@ -146,7 +146,9 @@ impl<'a, BT: BinaryTreesBindable<'a> + BinaryTreesEmpty<'a>> BinaryTreesEmpty<'a
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, BT: BinaryTreesBindable<'a> + BinaryTreesAvl<'a>> BinaryTreesAvl<'a> for BoundTrees<BT> {
|
impl<'a, BT: BinaryTreesBindable<'a> + BinaryTreesHeight<'a>> BinaryTreesHeight<'a>
|
||||||
|
for BoundTrees<BT>
|
||||||
|
{
|
||||||
fn height(&self, tree: &Self::Tree) -> u64 {
|
fn height(&self, tree: &Self::Tree) -> u64 {
|
||||||
self.0.height(&tree.bound)
|
self.0.height(&tree.bound)
|
||||||
}
|
}
|
||||||
@ -154,7 +156,9 @@ impl<'a, BT: BinaryTreesBindable<'a> + BinaryTreesAvl<'a>> BinaryTreesAvl<'a> fo
|
|||||||
fn leaf_height_error<T: 'a>(&self, height: u64) -> BTWrap<'a, Self, T> {
|
fn leaf_height_error<T: 'a>(&self, height: u64) -> BTWrap<'a, Self, T> {
|
||||||
self.0.leaf_height_error(height)
|
self.0.leaf_height_error(height)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, BT: BinaryTreesBindable<'a> + BinaryTreesAvl<'a>> BinaryTreesAvl<'a> for BoundTrees<BT> {
|
||||||
fn join_key_unbalanced(
|
fn join_key_unbalanced(
|
||||||
&self,
|
&self,
|
||||||
tl: Self::Tree,
|
tl: Self::Tree,
|
||||||
|
@ -176,7 +176,7 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesMutable<'a> for AvlTs<A> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesAvl<'a> for AvlTs<A> {
|
impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesHeight<'a> for AvlTs<A> {
|
||||||
fn height(&self, tree: &Self::Tree) -> u64 {
|
fn height(&self, tree: &Self::Tree) -> u64 {
|
||||||
tree.height
|
tree.height
|
||||||
}
|
}
|
||||||
@ -184,7 +184,9 @@ impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesAvl<'a> for AvlTs<A> {
|
|||||||
fn leaf_height_error<T: 'a>(&self, height: u64) -> BTWrap<'a, Self, T> {
|
fn leaf_height_error<T: 'a>(&self, height: u64) -> BTWrap<'a, Self, T> {
|
||||||
panic!("leaf height error: {height}.")
|
panic!("leaf height error: {height}.")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, A: 'a + PartialOrd + Clone> BinaryTreesAvl<'a> for AvlTs<A> {
|
||||||
fn join_key_unbalanced(
|
fn join_key_unbalanced(
|
||||||
&self,
|
&self,
|
||||||
tl: Self::Tree,
|
tl: Self::Tree,
|
||||||
|
@ -98,7 +98,7 @@ impl<'a, Ctx: Context<'a>, A: Mentionable<'a, Ctx> + Clone, C: 'a + Comparator<A
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Ctx: Context<'a>, A: Mentionable<'a, Ctx> + Clone, C: 'a + Comparator<A>>
|
impl<'a, Ctx: Context<'a>, A: Mentionable<'a, Ctx> + Clone, C: 'a + Comparator<A>>
|
||||||
BinaryTreesAvl<'a> for BoundContext<'a, Ctx, A, C>
|
BinaryTreesHeight<'a> for BoundContext<'a, Ctx, A, C>
|
||||||
{
|
{
|
||||||
fn height(&self, tree: &Self::Tree) -> u64 {
|
fn height(&self, tree: &Self::Tree) -> u64 {
|
||||||
tree.height()
|
tree.height()
|
||||||
@ -109,7 +109,11 @@ impl<'a, Ctx: Context<'a>, A: Mentionable<'a, Ctx> + Clone, C: 'a + Comparator<A
|
|||||||
AvlError::LeafHeight(height),
|
AvlError::LeafHeight(height),
|
||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, Ctx: Context<'a>, A: Mentionable<'a, Ctx> + Clone, C: 'a + Comparator<A>>
|
||||||
|
BinaryTreesAvl<'a> for BoundContext<'a, Ctx, A, C>
|
||||||
|
{
|
||||||
fn join_key_unbalanced(
|
fn join_key_unbalanced(
|
||||||
&self,
|
&self,
|
||||||
tl: Self::Tree,
|
tl: Self::Tree,
|
||||||
|
Loading…
Reference in New Issue
Block a user