Skip to content

Commit d4650b9

Browse files
committed
Address comments.
1 parent 42e9b54 commit d4650b9

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/lib.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ impl<'a, T> SearchTree<T>
7979
/// assert!(tree.contains(&String::from("world!")));
8080
/// ```
8181
pub fn insert(&mut self, value: T) {
82-
if let Ok(node) = self.create_node(value) {
82+
if let Some(node) = self.create_node(value) {
8383
self.nodes.push(node);
8484
// inserted the root
8585
if self.nodes.len() == 1 {
@@ -121,20 +121,21 @@ impl<'a, T> SearchTree<T>
121121
Err(previous_index)
122122
}
123123

124-
fn create_node(&mut self, value: T) -> Result<Node<T>, usize> {
124+
fn create_node(&mut self, value: T) -> Option<Node<T>> {
125125
match self.get_node(&value) {
126-
Ok(index) => Err(index),
127-
Err(previous_index) => {
128-
if let Some(parent) = previous_index {
129-
if self.nodes[parent].value < value {
130-
self.nodes[parent].right_child = Some(self.nodes.len());
126+
Ok(_) => None, // a node containing `value` already exists
127+
Err(parent) => {
128+
if let Some(parent_index) = parent {
129+
if self.nodes[parent_index].value < value {
130+
self.nodes[parent_index].right_child =
131+
Some(self.nodes.len());
131132
} else {
132-
self.nodes[parent].left_child = Some(self.nodes.len());
133+
self.nodes[parent_index].left_child = Some(self.nodes.len());
133134
}
134135
}
135-
Ok(Node {
136+
Some(Node {
136137
value: value,
137-
parent: previous_index,
138+
parent: parent,
138139
left_child: None,
139140
right_child: None,
140141
height: 0

0 commit comments

Comments
 (0)