pub fn sort_dag<T, P, C>(nodes: &mut [T], parents: P, children: C) where
P: Fn(&mut T) -> &mut [usize],
C: Fn(&mut T) -> &mut [usize],
The same algorithm as
sort, but for Directed Acyclic Graphs (DAGs),
encoded as trees with shared nodes.
WARNING: To avoid an infinite loop, one must be careful about the order of children.
A has children
C, B and
B has child
C, then the tree is not a DAG.
This is because the order of children is preserved after sorting.