Table of Contents

Trees

DotNet.AdvancedCollections provides binary tree implementations.

BinarySearchTree<T>

A binary search tree (BST) that maintains elements in sorted order and allows efficient searches.

Features

  • Efficient search, insertion, and deletion
  • In-order, pre-order, and post-order traversals
  • Generic with support for any comparable type

Usage Example

using DotNet.AdvancedCollections.Tree.BinarySearchTree;

var bst = new BinarySearchTree<int>();

// Add elements
bst.Add(5);
bst.Add(3);
bst.Add(7);
bst.Add(1);
bst.Add(9);

// Search for elements
bool exists = bst.Contains(7); // true

// Remove elements
bst.Remove(3);

// Get tree height
int height = bst.Height;

// Check if empty
bool isEmpty = bst.IsEmpty;

// Get node count
int count = bst.Count;

Traversals

The tree supports different traversal types:

using DotNet.AdvancedCollections.Tree.BinarySearchTree;

var bst = new BinarySearchTree<int>();
bst.Add(5);
bst.Add(3);
bst.Add(7);
bst.Add(1);
bst.Add(9);

// In-order traversal (left, root, right)
// Result: [1, 3, 5, 7, 9]
var inOrder = bst.InOrder();
foreach (var item in inOrder)
{
    Console.WriteLine(item);
}

// Pre-order traversal (root, left, right)
var preOrder = bst.PreOrder();
foreach (var item in preOrder)
{
    Console.WriteLine(item);
}

// Post-order traversal (left, right, root)
var postOrder = bst.PostOrder();
foreach (var item in postOrder)
{
    Console.WriteLine(item);
}

// Or use the default iterator with Traversal property
bst.Traversal = TraversalType.InOrder;
foreach (var item in bst)
{
    Console.WriteLine(item);
}

BinaryTreeNode<T>

Individual node of a binary tree with references to left and right children.

Usage Example

using DotNet.AdvancedCollections.Tree.BinaryNode;

// Create nodes manually
var root = new BinaryTreeNode<int>(10);
var left = new BinaryTreeNode<int>(5);
var right = new BinaryTreeNode<int>(15);

root.Left = left;
root.Right = right;

// Access values
int value = root.Value;
var leftChild = root.Left;
var rightChild = root.Right;

Complexity

Operation Average case Worst case
Search O(log n) O(n)
Insert O(log n) O(n)
Delete O(log n) O(n)
Traversal O(n) O(n)

Note: The worst case O(n) occurs when the tree is unbalanced (similar to a linked list).