Skip to main content

simple_bst/
bst_hashmap.rs

1#![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}