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.
#r "nuget: Dirkster.TreeLib, 1.2.0"
For F# scripts that support #r syntax, copy this into the source code to reference the package.

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 <T> root as parameter)
  • trees with multiple root node (expects IEnumerable<T> root as parameter)

Depth First

PreOrder

See TreeLib.BreadthFirst.Traverse.PreOrder implementation for:

  • trees with 1 root (expects <T> root as parameter)
  • trees with multiple root node (expects IEnumerable<T> root as parameter)

Postorder

See TreeLib.BreadthFirst.Traverse.Postorder implementation for:

  • trees with 1 root (expects <T> root as parameter)
  • trees with multiple root node (expects IEnumerable<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 <T> root as parameter)
  • trees with multiple root node (expects IEnumerable<T> root as parameter)

Depth First

PreOrder

See TreeLib.BreadthFirst.Traverse.PreOrder implementation for:

  • trees with 1 root (expects <T> root as parameter)
  • trees with multiple root node (expects IEnumerable<T> root as parameter)

Postorder

See TreeLib.BreadthFirst.Traverse.Postorder implementation for:

  • trees with 1 root (expects <T> root as parameter)
  • trees with multiple root node (expects IEnumerable<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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Dirkster.TreeLib:

Package Downloads
Aml.Engine.Services.TreeTraversal
The Aml.Engine.Services.TreeTraversal is a service extension for the Aml.Engine which provides different algorithms to traverse an InternalElement tree. The implementation is based on Dirk Bahles TreeLib.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.2.0 1,128 7/5/2019
1.1.0 2,049 11/9/2017
1.0.3 669 11/7/2017
1.0.2 504 11/7/2017
1.0.1 513 11/7/2017
1.0.0 674 10/8/2017