From 6b65e20a60ea480b761a7f5f34330efc4045473b Mon Sep 17 00:00:00 2001 From: sgoudham Date: Fri, 18 Feb 2022 02:19:36 +0000 Subject: [PATCH] Remove Node::Display Trait & Add BinarySearchTree::From Trait --- src/lib.rs | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index deb7e0a..c460657 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,12 +17,6 @@ struct Node { type HeapNode = Option>>; -impl Display for Node { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.value) - } -} - impl PartialEq for Node { fn eq(&self, other: &Self) -> bool { self.value == other.value @@ -180,6 +174,16 @@ impl Node { } } +impl From> for BinarySearchTree { + fn from(vec: Vec) -> Self { + let mut tree = BinarySearchTree::empty(); + for elem in vec.into_iter() { + tree.insert(elem); + } + tree + } +} + impl Display for BinarySearchTree { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { write!(f, "[")?; @@ -688,4 +692,30 @@ mod bst_test { assert_eq!(bst.post_order(), vec![&2, &1, &5, &4, &3]); } + + #[test] + fn create_bst_from_vec() { + let mut expected_bst = BinarySearchTree::empty(); + expected_bst.insert(10); + expected_bst.insert(20); + expected_bst.insert(5); + expected_bst.insert(30); + + let actual_bst = BinarySearchTree::from(vec![10, 20, 5, 30]); + + assert_eq!(actual_bst, expected_bst); + } + + #[test] + fn create_bst_from_into_vec() { + let mut expected_bst = BinarySearchTree::empty(); + expected_bst.insert(10); + expected_bst.insert(20); + expected_bst.insert(5); + expected_bst.insert(30); + + let actual_bst: BinarySearchTree = vec![10, 20, 5, 30].into(); + + assert_eq!(actual_bst, expected_bst); + } } \ No newline at end of file