pub struct Node<T> { /* private fields */ }
Expand description
A tree node
Implementations§
Source§impl<T> Node<T>
impl<T> Node<T>
Sourcepub fn new(data: T) -> Self
pub fn new(data: T) -> Self
Create a Node
Examples found in repository?
examples/hello.rs (line 24)
22fn main() {
23
24 let mut root = HellNode::new(NodeData::new(0, format!("root")));
25
26 root.data().print();
27
28 let mut level1_0 = HellNode::new(NodeData::new(1, format!("level1_0")));
29 let mut level1_1 = HellNode::new(NodeData::new(2, format!("level1_1")));
30
31 let level2_0_0 = HellNode::new(NodeData::new(3, format!("level2_0_0")));
32 let level2_0_1 = HellNode::new(NodeData::new(4, format!("level2_0_1")));
33
34 level1_0.add(level2_0_0);
35 level1_0.add(level2_0_1);
36
37 let level2_1_0 = HellNode::new(NodeData::new(3, format!("level2_1_0")));
38
39
40 level1_1.add(level2_1_0);
41
42 root.add(level1_0);
43 root.add(level1_1);
44
45 root.deepth_first_search(|nd| nd.print());
46
47 root.breadth_first_search(|nd| nd.print());
48}
Sourcepub fn add(&mut self, node: Node<T>)
pub fn add(&mut self, node: Node<T>)
Add a node to self
Examples found in repository?
examples/hello.rs (line 34)
22fn main() {
23
24 let mut root = HellNode::new(NodeData::new(0, format!("root")));
25
26 root.data().print();
27
28 let mut level1_0 = HellNode::new(NodeData::new(1, format!("level1_0")));
29 let mut level1_1 = HellNode::new(NodeData::new(2, format!("level1_1")));
30
31 let level2_0_0 = HellNode::new(NodeData::new(3, format!("level2_0_0")));
32 let level2_0_1 = HellNode::new(NodeData::new(4, format!("level2_0_1")));
33
34 level1_0.add(level2_0_0);
35 level1_0.add(level2_0_1);
36
37 let level2_1_0 = HellNode::new(NodeData::new(3, format!("level2_1_0")));
38
39
40 level1_1.add(level2_1_0);
41
42 root.add(level1_0);
43 root.add(level1_1);
44
45 root.deepth_first_search(|nd| nd.print());
46
47 root.breadth_first_search(|nd| nd.print());
48}
Sourcepub fn data(&self) -> &T
pub fn data(&self) -> &T
Get data
Examples found in repository?
examples/hello.rs (line 26)
22fn main() {
23
24 let mut root = HellNode::new(NodeData::new(0, format!("root")));
25
26 root.data().print();
27
28 let mut level1_0 = HellNode::new(NodeData::new(1, format!("level1_0")));
29 let mut level1_1 = HellNode::new(NodeData::new(2, format!("level1_1")));
30
31 let level2_0_0 = HellNode::new(NodeData::new(3, format!("level2_0_0")));
32 let level2_0_1 = HellNode::new(NodeData::new(4, format!("level2_0_1")));
33
34 level1_0.add(level2_0_0);
35 level1_0.add(level2_0_1);
36
37 let level2_1_0 = HellNode::new(NodeData::new(3, format!("level2_1_0")));
38
39
40 level1_1.add(level2_1_0);
41
42 root.add(level1_0);
43 root.add(level1_1);
44
45 root.deepth_first_search(|nd| nd.print());
46
47 root.breadth_first_search(|nd| nd.print());
48}
Sourcepub fn last_child(&self) -> Option<&Node<T>>
pub fn last_child(&self) -> Option<&Node<T>>
Get last child
Sourcepub fn last_child_mut(&mut self) -> Option<&mut Node<T>>
pub fn last_child_mut(&mut self) -> Option<&mut Node<T>>
Get last mut child
Sourcepub fn children_mut(&mut self) -> &mut Vec<Node<T>>
pub fn children_mut(&mut self) -> &mut Vec<Node<T>>
Get mut children
Sourcepub fn child_by_path(&self, path: &Vec<usize>) -> Option<&Node<T>>
pub fn child_by_path(&self, path: &Vec<usize>) -> Option<&Node<T>>
Get child by a vec path path: [0, 1, 3]
Sourcepub fn child_mut_by_path(&mut self, path: &Vec<usize>) -> Option<&mut Node<T>>
pub fn child_mut_by_path(&mut self, path: &Vec<usize>) -> Option<&mut Node<T>>
Get mut child by a vec path path: [0, 1, 3]
Sourcepub fn last_child_by_level(&self, level: usize) -> Option<&Node<T>>
pub fn last_child_by_level(&self, level: usize) -> Option<&Node<T>>
get right child by deepth
Sourcepub fn last_child_mut_by_level(&mut self, level: usize) -> Option<&mut Node<T>>
pub fn last_child_mut_by_level(&mut self, level: usize) -> Option<&mut Node<T>>
get right mut child by deepth
Sourcepub fn deepth_first_search<F: FnMut(&T)>(&self, f: F)
pub fn deepth_first_search<F: FnMut(&T)>(&self, f: F)
Deepth first traversal (Preorder) of a tree
Examples found in repository?
examples/hello.rs (line 45)
22fn main() {
23
24 let mut root = HellNode::new(NodeData::new(0, format!("root")));
25
26 root.data().print();
27
28 let mut level1_0 = HellNode::new(NodeData::new(1, format!("level1_0")));
29 let mut level1_1 = HellNode::new(NodeData::new(2, format!("level1_1")));
30
31 let level2_0_0 = HellNode::new(NodeData::new(3, format!("level2_0_0")));
32 let level2_0_1 = HellNode::new(NodeData::new(4, format!("level2_0_1")));
33
34 level1_0.add(level2_0_0);
35 level1_0.add(level2_0_1);
36
37 let level2_1_0 = HellNode::new(NodeData::new(3, format!("level2_1_0")));
38
39
40 level1_1.add(level2_1_0);
41
42 root.add(level1_0);
43 root.add(level1_1);
44
45 root.deepth_first_search(|nd| nd.print());
46
47 root.breadth_first_search(|nd| nd.print());
48}
Sourcepub fn breadth_first_search<F: FnMut(&T)>(&self, f: F)
pub fn breadth_first_search<F: FnMut(&T)>(&self, f: F)
Breadth first traversal (Level Order) of a tree
Examples found in repository?
examples/hello.rs (line 47)
22fn main() {
23
24 let mut root = HellNode::new(NodeData::new(0, format!("root")));
25
26 root.data().print();
27
28 let mut level1_0 = HellNode::new(NodeData::new(1, format!("level1_0")));
29 let mut level1_1 = HellNode::new(NodeData::new(2, format!("level1_1")));
30
31 let level2_0_0 = HellNode::new(NodeData::new(3, format!("level2_0_0")));
32 let level2_0_1 = HellNode::new(NodeData::new(4, format!("level2_0_1")));
33
34 level1_0.add(level2_0_0);
35 level1_0.add(level2_0_1);
36
37 let level2_1_0 = HellNode::new(NodeData::new(3, format!("level2_1_0")));
38
39
40 level1_1.add(level2_1_0);
41
42 root.add(level1_0);
43 root.add(level1_1);
44
45 root.deepth_first_search(|nd| nd.print());
46
47 root.breadth_first_search(|nd| nd.print());
48}
Auto Trait Implementations§
impl<T> Freeze for Node<T>where
T: Freeze,
impl<T> RefUnwindSafe for Node<T>where
T: RefUnwindSafe,
impl<T> Send for Node<T>where
T: Send,
impl<T> Sync for Node<T>where
T: Sync,
impl<T> Unpin for Node<T>where
T: Unpin,
impl<T> UnwindSafe for Node<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more