diff options
Diffstat (limited to 'src/ntree.rs')
| -rw-r--r-- | src/ntree.rs | 44 |
1 files changed, 6 insertions, 38 deletions
diff --git a/src/ntree.rs b/src/ntree.rs index 26c241c..5500649 100644 --- a/src/ntree.rs +++ b/src/ntree.rs @@ -7,32 +7,6 @@ pub struct NTreeNode<T> } -#[derive(Default, Clone)] -pub struct NTree<T> -{ - root: Option<NTreeNode<T>> -} - -impl<T> NTree<T> -{ - pub fn set_root_val( - &mut self, - val: T) - { - self.root = Some(NTreeNode { value: val, children: vec![] }); - } - - pub fn set_root( - &mut self, - node: NTreeNode<T>) - { - self.root = Some(node); - } - - pub fn root(&self) -> &Option<NTreeNode<T>> { &self.root } - pub fn root_mut(&mut self) -> &mut Option<NTreeNode<T>> { &mut self.root } -} - impl<T> NTreeNode<T> { pub fn new(val: T) @@ -49,12 +23,6 @@ impl<T> NTreeNode<T> pub fn children(&self) -> &[NTreeNode<T>] { &self.children.as_slice() } - pub fn as_tree(self) - -> NTree<T> - { - NTree { root: Some(self) } - } - pub fn insert_value( &mut self, val: T) @@ -69,13 +37,13 @@ impl<T> NTreeNode<T> self.children.push(subtree); } - pub fn insert_tree( - &mut self, - subtree: NTree<T>) + pub fn traverse_preorder(&self) + -> Vec<&T> { - match subtree.root { - Some(subtree_root) => self.insert_node(subtree_root), - None => { panic!("Tried to put null subtree") } + let mut result = vec![self.value()]; + for child in &self.children { + result.extend(child.traverse_preorder().iter()); } + result } } |
