private void Traverse(ArbitraryTreeNode node, Action <ArbitraryTreeNode> actionForNode) { if (node == null) { return; } actionForNode(node); Traverse(node.LeftChild, actionForNode); Traverse(node.RightSibling, actionForNode); }
public ArbitraryTree(ArbitraryTreeNode root) { rootNode = root; }
public void AppendRightSibling(ArbitraryTreeNode node, ArbitraryTreeNode nodeToAppend) { nodeToAppend.Parent = node; node.RightSibling = nodeToAppend; }
public void AppendLeftChild(ArbitraryTreeNode node, ArbitraryTreeNode nodeToAppend) { nodeToAppend.Parent = node; node.LeftChild = nodeToAppend; }