Dirkster.TreeLib 1.2.0

This project produces a .Net Standard Library or .Net 4.0 Library with Generic and IEnumerable/Yield (LevelOrder, PreOrder, PostOrder) tree traversal methods
to traverse k-ary trees in different orders via IEnumerable<T>/Yield<T>.

Install-Package Dirkster.TreeLib -Version 1.2.0
dotnet add package Dirkster.TreeLib --version 1.2.0
<PackageReference Include="Dirkster.TreeLib" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Dirkster.TreeLib --version 1.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

TreeLib

This project provides a .Net and Standard (1.4, 1.6, 2.0) Library with
Generic (LevelOrder, PreOrder, PostOrder) IEnumerable<T> methods
to traverse k-nary trees in different orders of visting nodes.

Implementing something as complicated as a Post-Order traversal algorithm requires just:

  • a project reference,
  • a LINQ statement to find each set of children in a node,
  • and a simple for each loop to implement the operation on each tree node:

C# Code Sample

Console.WriteLine("(Depth First) PostOrder Tree Traversal V3");
items = TreeLib.Depthfirst.Traverse.PostOrder(root, i => i.Children);

foreach (var item in items)
{
Console.WriteLine(item.GetPath());
}

This pattern leads to a clear-cut readable, scalable and maintainable separation of:

  • the traversal algorithm and
  • the operations performed on each tree node (e.g.: Console.WriteLine(item.GetPath());).

The project in this repository contains a demo console project to demo its usage in more detail.

Supported Generic Traversal Methods

Breadth First

Level Order
See TreeLib.BreadthFirst.Traverse.LevelOrder implementation for:

  • trees with 1 root (expects &lt;T> root as parameter)
  • trees with multiple root node (expects IEnumerable&lt;T> root as parameter)

Depth First

PreOrder

See TreeLib.BreadthFirst.Traverse.PreOrder implementation for:

  • trees with 1 root (expects &lt;T> root as parameter)
  • trees with multiple root node (expects IEnumerable&lt;T> root as parameter)

Postorder

See TreeLib.BreadthFirst.Traverse.Postorder implementation for:

  • trees with 1 root (expects &lt;T> root as parameter)
  • trees with multiple root node (expects IEnumerable&lt;T> root as parameter)

Project Reference: https://github.com/Dirkster99/TreeLib/

TreeLib

This project provides a .Net and Standard (1.4, 1.6, 2.0) Library with
Generic (LevelOrder, PreOrder, PostOrder) IEnumerable<T> methods
to traverse k-nary trees in different orders of visting nodes.

Implementing something as complicated as a Post-Order traversal algorithm requires just:

  • a project reference,
  • a LINQ statement to find each set of children in a node,
  • and a simple for each loop to implement the operation on each tree node:

C# Code Sample

Console.WriteLine("(Depth First) PostOrder Tree Traversal V3");
items = TreeLib.Depthfirst.Traverse.PostOrder(root, i => i.Children);

foreach (var item in items)
{
Console.WriteLine(item.GetPath());
}

This pattern leads to a clear-cut readable, scalable and maintainable separation of:

  • the traversal algorithm and
  • the operations performed on each tree node (e.g.: Console.WriteLine(item.GetPath());).

The project in this repository contains a demo console project to demo its usage in more detail.

Supported Generic Traversal Methods

Breadth First

Level Order
See TreeLib.BreadthFirst.Traverse.LevelOrder implementation for:

  • trees with 1 root (expects &lt;T> root as parameter)
  • trees with multiple root node (expects IEnumerable&lt;T> root as parameter)

Depth First

PreOrder

See TreeLib.BreadthFirst.Traverse.PreOrder implementation for:

  • trees with 1 root (expects &lt;T> root as parameter)
  • trees with multiple root node (expects IEnumerable&lt;T> root as parameter)

Postorder

See TreeLib.BreadthFirst.Traverse.Postorder implementation for:

  • trees with 1 root (expects &lt;T> root as parameter)
  • trees with multiple root node (expects IEnumerable&lt;T> root as parameter)

Project Reference: https://github.com/Dirkster99/TreeLib/

Release Notes

Releasing version 1.2.0 with BugFix on for Issue #2 on IEnumerable<T> DepthFirst.Traverse.PostOrder.

Dependencies

This package has no dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.2.0 85 7/5/2019
1.1.0 1,312 11/9/2017
1.0.3 350 11/7/2017
1.0.2 246 11/7/2017
1.0.1 254 11/7/2017
1.0.0 357 10/8/2017