public static List <T> ToList <T>(this AvlTree <T> tree, TraversalDelegate <T> traversalmethod)
        {
            var list = new List <T>(tree.Count);

            tree.Map(traversalmethod, x => list.Add(x));
            return(list);
        }
    public static List <T> ToList <T>(this BinaryTree <T> tree, TraversalDelegate <T> traversalmethod)
    {
        var list = new List <T>();

        traversalmethod(tree, list);
        return(list);
    }
예제 #3
0
 public void TraversalTree(TraversalDelegate action)
 {
     if (root == null)
     {
         return;
     }
     RecursiveTraversalTree(root, action);
 }
예제 #4
0
 void RecursiveTraversalTree(Node node, TraversalDelegate action)
 {
     if (action(node))
     {
         foreach (var child in node.children)
         {
             RecursiveTraversalTree(child, action);
         }
     }
 }
예제 #5
0
 void RecursiveTraversalTree(Node node, TraversalDelegate action)
 {
     if (action(node))
     {
         foreach (var child in node.children)
         {
             RecursiveTraversalTree(child, action);
         }
     }
 }
예제 #6
0
 void PostOrderTraverse(TrieTier cur_node, TraversalDelegate func, object[] p)
 {
     // Visit all subtrees, then perform the function on the current node
     for (int i = 0; i < cur_node.Tiers.Length; i++)
     {
         if (cur_node.Tiers[i] != null)
         {
             PostOrderTraverse(cur_node.Tiers[i], func, p);
         }
     }
     func(cur_node, p);
 }
예제 #7
0
 void RecursiveTraversalTree(Node node, TraversalDelegate action)
 {
     if (action(node))
     {
         if (node.left != null)
         {
             RecursiveTraversalTree(node.left, action);
         }
         if (node.right != null)
         {
             RecursiveTraversalTree(node.right, action);
         }
     }
 }
 public static void Map <T>(this AvlTree <T> tree, TraversalDelegate <T> traversalmethod, CollectDelegate <T> collect)
 {
     traversalmethod(tree.root, collect);
 }
예제 #9
0
 void RecursiveTraversalTree(Node node, TraversalDelegate action)
 {
     if (action(node))
     {
         if (node.left != null) RecursiveTraversalTree(node.left, action);
         if (node.right != null) RecursiveTraversalTree(node.right, action);
     }
 }
예제 #10
0
 public void TraversalTree(TraversalDelegate action)
 {
     if (root == null) return;
     RecursiveTraversalTree(root, action);
 }
예제 #11
0
 void PostOrderTraverse(TraversalDelegate func, object[] p)
 {
     PostOrderTraverse(base_tier, func, p);
 }