/// <summary> /// Performs a depth-first walk of the tree /// </summary> public void Walk(IParamWalker callback) { callback.PreArgument(0, Children.Count); for (int i = 0; i < Children.Count; i++) { WalkWorker(callback, Children[i], 0); } callback.PostArgument(0); }
private void WalkWorker(IParamWalker callback, ParamTreeNode curNode, int depth) { callback.Walk(depth, curNode); if (curNode.Children.Count != 0) { callback.PreArgument(depth + 1, curNode.Children.Count); for (int i = 0; i < curNode.Children.Count; i++) { WalkWorker(callback, curNode.Children[i], depth + 1); } callback.PostArgument(depth + 1); } }