/// <summary> /// Traverse the entire tree, preorder fashion /// </summary> /// <param name="node"></param> /// <param name="nodeAction"></param> public void Traverse(Node <int> node, Action <Node <int> > nodeAction) { nodeAction.Invoke(node); foreach (Node <int> kidNode in node.OrderByBSRule()) { Traverse(kidNode, nodeAction); } }
/// <summary> /// Traverse the entire tree, postorder fashion /// </summary> /// <param name="node"></param> /// <param name="nodeAction"></param> public void TraversePostorder(Node <int> node, Action <Node <int> > nodeAction) { foreach (Node <int> kidNode in node.OrderByBSRule()) { nodeAction.Invoke(kidNode); TraverseInOrder(kidNode, nodeAction); } nodeAction.Invoke(node); }