Dirkster.TreeLib 1.2.0

.NET Standard 1.4 .NET Framework 4.0
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"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Dirkster.TreeLib as a Cake Addin
#addin nuget:?package=Dirkster.TreeLib&version=1.2.0

// Install Dirkster.TreeLib as a Cake Tool
#tool nuget:?package=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 <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/

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1
.NET Framework net40 net403 net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen30 tizen40 tizen60
Universal Windows Platform uap uap10.0
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

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 Downloads Last updated
1.2.0 3,735 7/5/2019
1.1.0 2,643 11/9/2017
1.0.3 935 11/7/2017
1.0.2 737 11/7/2017
1.0.1 724 11/7/2017
1.0.0 984 10/8/2017

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