Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,38 @@
Class BinaryTree(Of T)
ReadOnly Property Left As BinaryTree(Of T)
ReadOnly Property Right As BinaryTree(Of T)
ReadOnly Property Value As T
Sub New(value As T, Optional left As BinaryTree(Of T) = Nothing, Optional right As BinaryTree(Of T) = Nothing)
Me.Value = value
Me.Left = left
Me.Right = right
End Sub
Function Map(Of U)(f As Func(Of T, U)) As BinaryTree(Of U)
Return New BinaryTree(Of U)(f(Me.Value), Me.Left?.Map(f), Me.Right?.Map(f))
End Function
Overrides Function ToString() As String
Dim sb As New Text.StringBuilder()
Me.ToString(sb, 0)
Return sb.ToString()
End Function
Private Overloads Sub ToString(sb As Text.StringBuilder, depth As Integer)
sb.Append(New String(ChrW(AscW(vbTab)), depth))
sb.AppendLine(Me.Value?.ToString())
Me.Left?.ToString(sb, depth + 1)
Me.Right?.ToString(sb, depth + 1)
End Sub
End Class
Module Program
Sub Main()
Dim b As New BinaryTree(Of Integer)(6, New BinaryTree(Of Integer)(5), New BinaryTree(Of Integer)(7))
Dim b2 As BinaryTree(Of Double) = b.Map(Function(x) x * 0.5)
Console.WriteLine(b)
Console.WriteLine(b2)
End Sub
End Module