use tree_struct::Node;
#[test]
fn breadth_first() {
let tree =
Node::builder('a')
.child(Node::builder('b')
.child(Node::builder('d')
.child(Node::builder('h'))
.child(Node::builder('i')))
.child(Node::builder('e')
.child(Node::builder('j'))
.child(Node::builder('k'))))
.child(Node::builder('c')
.child(Node::builder('f')
.child(Node::builder('l'))
.child(Node::builder('m')))
.child(Node::builder('g')
.child(Node::builder('n'))
.child(Node::builder('o'))))
.build();
assert_eq!(
tree.iter_bfs().map(|n| n.content).collect::<Vec<_>>(),
vec!['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']
);
}
#[test]
fn depth_first() {
let tree =
Node::builder('a')
.child(Node::builder('b')
.child(Node::builder('c')
.child(Node::builder('d'))
.child(Node::builder('e')))
.child(Node::builder('f')
.child(Node::builder('g'))
.child(Node::builder('h'))))
.child(Node::builder('i')
.child(Node::builder('j')
.child(Node::builder('k'))
.child(Node::builder('l')))
.child(Node::builder('m')
.child(Node::builder('n'))
.child(Node::builder('o'))))
.build();
assert_eq!(
tree.iter_dfs().map(|n| n.content).collect::<Vec<_>>(),
vec!['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']
);
}