Updated repo to be C# only

This commit is contained in:
2022-11-04 12:03:03 +00:00
parent e2157e7093
commit 0dfb647f8f
18 changed files with 2 additions and 2 deletions

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace C_.Datastructures.Heap
{
internal class Heap<T> where T:IComparable
{
internal HeapNode<T>? Root { get; set; }
private int Count { get; set; }
public static Heap<T> Create(){
return new Heap<T>{
Root = null,
Count = 0
};
}
public static Heap<T> Create(T value){
return new Heap<T>{
Root = HeapNode<T>.Create(value),
Count = 1
};
}
public void Add(T value){
Count++;
if (Root == default)
{//If the new node needs to be added to the top of the heap
Root = HeapNode<T>.Create(value);
return;
}
//If the new node can be placed in a subchild
HeapNode<T> node = Root;
while(node.Left != default){
node = node.Left;
}
}
}
}

View File

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using C_.Datastructures.Generic;
using System.Threading.Tasks;
namespace C_.Datastructures.Heap
{
internal class HeapNode<T> : DirectedNode<T, HeapNode<T>>
{
internal int LeftWeight { get; set; }
internal int RightWeight { get; set; }
//All properties inherited from base class
public static HeapNode<T> Create(T value)
{
//Create a new node without any children
return new HeapNode<T>
{
Value = value
};
}
public static HeapNode<T> Create(T value, HeapNode<T>? left, HeapNode<T>? right)
{
//Create a new node with the option of having children
return new HeapNode<T>
{
Value = value,
Left = left,
LeftWeight = (left != default) ? 1 : 0,
Right = right,
RightWeight = (right != default) ? 1 : 0
};
}
}
}