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" />
paket add Dirkster.TreeLib --version 1.2.0
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.
Used By
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.