Compare commits

...

2 Commits

Author SHA1 Message Date
e66473bb25 Updated Program.cs to test HeapNode weighting 2022-04-20 15:34:43 +01:00
e462929612 Added HeapNode 2022-04-20 15:33:45 +01:00
2 changed files with 67 additions and 19 deletions

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
};
}
}
}

View File

@ -1,5 +1,6 @@
using System;
using C_.Datastructures.BinaryTree;
using C_.Datastructures.Heap;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
@ -107,34 +108,43 @@ Console.WriteLine("Hello, World!");
//Tree<int> tree = new Tree<int>();
//tree.Add(40);
//tree.Add(30);
//tree.Add(50);
//tree.Add(25);
//tree.Add(35);
//tree.Add(45);
//tree.Add(60);
//tree.Add(15);
//tree.Add(28);
//tree.Add(55);
//tree.Add(70);
////var x = tree.Delete(10);
////tree.Delete(5);
//var inorder = tree.Traverse(TraversalType.Inorder);
//var preorder = tree.Traverse(TraversalType.Preorder);
//var postorder = tree.Traverse(TraversalType.Postorder);
//var breadthFirst = tree.Traverse(TraversalType.Breadth);
Tree<int> tree = new Tree<int>();
tree.Add(40);
tree.Add(30);
tree.Add(50);
tree.Add(25);
tree.Add(35);
tree.Add(45);
tree.Add(60);
tree.Add(15);
tree.Add(28);
tree.Add(55);
tree.Add(70);
//var x = tree.Delete(10);
//tree.Delete(5);
var inorder = tree.Traverse(TraversalType.Inorder);
var preorder = tree.Traverse(TraversalType.Preorder);
var postorder = tree.Traverse(TraversalType.Postorder);
var breadthFirst = tree.Traverse(TraversalType.Breadth);
var x = HeapNode<int>.Create(1, null, new HeapNode<int> { Left = default, Right = default });
Console.ReadLine();