simple_bst/
bst_hashmap.rs1#![allow(unused)]
2
3use crate::bst::{Bst, NodeRef};
4
5#[derive(Default)]
6pub struct BstHashmap<T: Ord, V>{
7 pub bst: Bst<T, V>
8}
9
10impl <T: Ord + Clone, V: Clone> BstHashmap<T, V> {
11 pub fn insert(&mut self, key: T, value: V) {
12 self.bst.insert(key, value);
13 }
14
15 pub fn search(&self, key: T) -> Option<V> {
16 let node: NodeRef<T, V> = self.bst.search(key);
17 node.map(|node| node.borrow().value.clone())
18 }
19
20 pub fn min(&self, key: T) -> Option<(T,V)> {
21 let node = self.bst.search(key);
22 let min: NodeRef<T, V> = self.bst.min(node);
23 min.map(|min_node| (min_node.borrow().key.clone(), min_node.borrow().value.clone()))
24 }
25
26 pub fn max(&self, key: T) -> Option<(T,V)> {
27 let node = self.bst.search(key);
28 let max: NodeRef<T, V> = self.bst.max(node);
29 max.map(|max_node| (max_node.borrow().key.clone(), max_node.borrow().value.clone()))
30 }
31
32 pub fn remove(&mut self, key: T){
33 let node = self.bst.search(key);
34 self.bst.remove(node);
35 }
36}