/// <summary> /// 按照深度优先遍历子节点 /// </summary> /// /// <param name="beforeHandler"></param> /// <param name="handler"></param> /// <param name="context"></param> public void TraverseChildren(TraverseNodeHandler handler, BeforeTraverseNodeHandler beforeHandler, object context) { bool continued = true; if (beforeHandler != null) { continued = beforeHandler(this, context); } if (!continued) { return; } foreach (TNode node in children) { if (handler != null) { continued = handler(this, node, context); } if (continued) { node.TraverseChildren(handler, beforeHandler, context); } else { break; } } }
/// <summary> /// 按照深度优先遍历子节点 /// </summary> /// <param name="handler"></param> /// <param name="context"></param> public void TraverseChildren(TraverseNodeHandler handler, object context) { TraverseChildren(handler, null, context); }
/// <summary> /// 按照深度优先遍历子节点 /// </summary> /// <param name="handler"></param> public void TraverseChildren(TraverseNodeHandler handler) { TraverseChildren(handler, null, null); }