/// <summary> /// Replace one node with another. /// </summary> /// <param name="rootNode">The root node.</param> /// <param name="replaceThisNode">The node to replace.</param> /// <param name="replaceWith">What to replace with.</param> public static void Process(ITreeNode rootNode, ITreeNode replaceThisNode, ITreeNode replaceWith) { bool done = false; DepthFirstTraversal trav = new DepthFirstTraversal(); trav.Traverse(rootNode, (n) => { if (done) { return false; } for (int i = 0; i < n.ChildNodes.Count; i++) { ITreeNode childNode = n.ChildNodes[i]; if (childNode == replaceThisNode) { n.ChildNodes[i] = replaceWith; done = true; return false; } } return true; }); }
/// <summary> /// Replace one node with another. /// </summary> /// <param name="rootNode">The root node.</param> /// <param name="replaceThisNode">The node to replace.</param> /// <param name="replaceWith">What to replace with.</param> public static void Process(ITreeNode rootNode, ITreeNode replaceThisNode, ITreeNode replaceWith) { bool done = false; DepthFirstTraversal trav = new DepthFirstTraversal(); trav.Traverse(rootNode, (n) => { if (done) { return(false); } for (int i = 0; i < n.ChildNodes.Count; i++) { ITreeNode childNode = n.ChildNodes[i]; if (childNode == replaceThisNode) { n.ChildNodes[i] = replaceWith; done = true; return(false); } } return(true); }); }
/// <summary> /// Count the nodes from this tree node. /// </summary> /// <param name="node">The tree node.</param> /// <returns>The node count.</returns> public static int Process(ITreeNode node) { int result = 0; DepthFirstTraversal trav = new DepthFirstTraversal(); trav.Traverse( node, (n) => { result++; return true; }); return result; }
/// <summary> /// Count the nodes from this tree node. /// </summary> /// <param name="node">The tree node.</param> /// <returns>The node count.</returns> public static int Process(ITreeNode node) { int result = 0; DepthFirstTraversal trav = new DepthFirstTraversal(); trav.Traverse(node, (n) => { result++; return(true); }); return(result); }
/// <summary> /// Obtain the specified tree node for the specified index. /// </summary> /// <param name="index">The index.</param> /// <param name="node">The tree node to search from.</param> /// <returns>The tree node for the specified index.</returns> public static ITreeNode process(int index, ITreeNode node) { ITreeNode result = null; int nodeCount = 0; DepthFirstTraversal trav = new DepthFirstTraversal(); trav.Traverse(node, (n) => { if ( nodeCount >= index) { if (result == null) { result = n; } return false; } nodeCount++; return true; }); return result; }
/// <summary> /// Obtain the specified tree node for the specified index. /// </summary> /// <param name="index">The index.</param> /// <param name="node">The tree node to search from.</param> /// <returns>The tree node for the specified index.</returns> public static ITreeNode process(int index, ITreeNode node) { ITreeNode result = null; int nodeCount = 0; DepthFirstTraversal trav = new DepthFirstTraversal(); trav.Traverse(node, (n) => { if (nodeCount >= index) { if (result == null) { result = n; } return(false); } nodeCount++; return(true); }); return(result); }