Skip to content

Commit 32f3297

Browse files
More algorithms
1 parent 8add171 commit 32f3297

File tree

2 files changed

+478
-6
lines changed

2 files changed

+478
-6
lines changed

Algorithms/Medium_Algorithms.Tests/UnitTest1.cs

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,150 @@ public void BinaryTreeDiameterClassTestCase1()
528528
var expected = 6;
529529
var actual = new BinaryTreeDiameterClass().BinaryTreeDiameter(root);
530530
Assert.True(expected == actual);
531+
}
532+
#endregion
533+
534+
#region FindSuccessor
535+
[Fact]
536+
public void FindSuccessorClassTestCase1()
537+
{
538+
FindSuccessorClass.BinaryTree root = new FindSuccessorClass.BinaryTree(1);
539+
root.left = new FindSuccessorClass.BinaryTree(2);
540+
root.left.parent = root;
541+
root.right = new FindSuccessorClass.BinaryTree(3);
542+
root.right.parent = root;
543+
root.left.left = new FindSuccessorClass.BinaryTree(4);
544+
root.left.left.parent = root.left;
545+
root.left.right = new FindSuccessorClass.BinaryTree(5);
546+
root.left.right.parent = root.left;
547+
root.left.left.left = new FindSuccessorClass.BinaryTree(6);
548+
root.left.left.left.parent = root.left.left;
549+
FindSuccessorClass.BinaryTree node = root.left.right;
550+
FindSuccessorClass.BinaryTree expected = root;
551+
FindSuccessorClass.BinaryTree actual = new FindSuccessorClass().FindSuccessor(root, node);
552+
Assert.Equal(expected, actual);
553+
}
554+
#endregion
555+
556+
#region HeightBalancedBinaryTree
557+
[Fact]
558+
public void HeightBalancedBinaryTreeClassTestCase()
559+
{
560+
HeightBalancedBinaryTreeClass.BinaryTree root = new HeightBalancedBinaryTreeClass.BinaryTree(1);
561+
root = new HeightBalancedBinaryTreeClass.BinaryTree(1);
562+
root.left = new HeightBalancedBinaryTreeClass.BinaryTree(2);
563+
root.right = new HeightBalancedBinaryTreeClass.BinaryTree(3);
564+
root.left.left = new HeightBalancedBinaryTreeClass.BinaryTree(4);
565+
root.left.right = new HeightBalancedBinaryTreeClass.BinaryTree(5);
566+
root.right.right = new HeightBalancedBinaryTreeClass.BinaryTree(6);
567+
root.left.right.left = new HeightBalancedBinaryTreeClass.BinaryTree(7);
568+
root.left.right.right = new HeightBalancedBinaryTreeClass.BinaryTree(8);
569+
bool expected = true;
570+
var actual = new HeightBalancedBinaryTreeClass().HeightBalancedBinaryTree(root);
571+
Assert.True(expected == actual);
572+
}
573+
#endregion
574+
575+
#region MergeBinaryTrees
576+
[Fact]
577+
public void MergeBinaryTreesTestCase1()
578+
{
579+
MergeBinaryTreesClass.BinaryTree tree1 = new MergeBinaryTreesClass.BinaryTree(1);
580+
tree1.left = new MergeBinaryTreesClass.BinaryTree(3);
581+
tree1.left.left = new MergeBinaryTreesClass.BinaryTree(7);
582+
tree1.left.right = new MergeBinaryTreesClass.BinaryTree(4);
583+
tree1.right = new MergeBinaryTreesClass.BinaryTree(2);
584+
585+
MergeBinaryTreesClass.BinaryTree tree2 = new MergeBinaryTreesClass.BinaryTree(1);
586+
tree2.left = new MergeBinaryTreesClass.BinaryTree(5);
587+
tree2.left.left = new MergeBinaryTreesClass.BinaryTree(2);
588+
tree2.right = new MergeBinaryTreesClass.BinaryTree(9);
589+
tree2.right.left = new MergeBinaryTreesClass.BinaryTree(7);
590+
tree2.right.right = new MergeBinaryTreesClass.BinaryTree(6);
591+
592+
MergeBinaryTreesClass.BinaryTree expected = new MergeBinaryTreesClass.BinaryTree(2);
593+
expected.left = new MergeBinaryTreesClass.BinaryTree(8);
594+
expected.left.left = new MergeBinaryTreesClass.BinaryTree(9);
595+
expected.left.right = new MergeBinaryTreesClass.BinaryTree(4);
596+
expected.right = new MergeBinaryTreesClass.BinaryTree(11);
597+
expected.right.left = new MergeBinaryTreesClass.BinaryTree(7);
598+
expected.right.right = new MergeBinaryTreesClass.BinaryTree(6);
599+
600+
MergeBinaryTreesClass.BinaryTree actual = new MergeBinaryTreesClass().MergeBinaryTrees(tree1, tree2);
601+
602+
Assert.True(areTreesEqual(expected, actual));
603+
}
604+
605+
public bool areTreesEqual(
606+
MergeBinaryTreesClass.BinaryTree tree1, MergeBinaryTreesClass.BinaryTree tree2
607+
)
608+
{
609+
if (tree1 == null && tree2 == null) return true;
610+
611+
if (tree1 == null && tree2 != null)
612+
{
613+
return false;
614+
}
615+
else if (tree1 != null && tree2 == null)
616+
{
617+
return false;
618+
}
619+
620+
if (tree1.value != tree2.value) return false;
621+
return areTreesEqual(tree1.left, tree2.left) &&
622+
areTreesEqual(tree1.right, tree2.right);
623+
}
624+
#endregion
625+
626+
#region SymmetricalTree
627+
[Fact]
628+
public void SymmetricalTreeTestCase1()
629+
{
630+
SymmetricalTreeClass.BinaryTree tree = new SymmetricalTreeClass.BinaryTree(10);
631+
tree.left = new SymmetricalTreeClass.BinaryTree(5);
632+
tree.right = new SymmetricalTreeClass.BinaryTree(5);
633+
tree.left.left = new SymmetricalTreeClass.BinaryTree(7);
634+
tree.left.right = new SymmetricalTreeClass.BinaryTree(9);
635+
tree.right.left = new SymmetricalTreeClass.BinaryTree(9);
636+
tree.right.right = new SymmetricalTreeClass.BinaryTree(7);
637+
var expected = true;
638+
var actual = new SymmetricalTreeClass().SymmetricalTree(tree);
639+
Assert.True(expected == actual);
640+
}
641+
#endregion
642+
643+
#region SplitBinaryTreeClass
644+
[Fact]
645+
public void SplitBinaryTreeClassTestCase1()
646+
{
647+
SplitBinaryTreeClass.BinaryTree tree = new SplitBinaryTreeClass.BinaryTree(2);
648+
tree.left = new SplitBinaryTreeClass.BinaryTree(4);
649+
tree.left.left = new SplitBinaryTreeClass.BinaryTree(4);
650+
tree.left.right = new SplitBinaryTreeClass.BinaryTree(6);
651+
tree.right = new SplitBinaryTreeClass.BinaryTree(10);
652+
tree.right.left = new SplitBinaryTreeClass.BinaryTree(3);
653+
tree.right.right = new SplitBinaryTreeClass.BinaryTree(3);
654+
int expected = 16;
655+
int actual = new SplitBinaryTreeClass().SplitBinaryTree(tree);
656+
Assert.True(expected == actual);
657+
}
658+
#endregion
659+
660+
#region MaxSubsetSumNoAdjacent
661+
[Fact]
662+
public void MaxSubsetSumNoAdjacentTestCase1()
663+
{
664+
int[] input = { 75, 105, 120, 75, 90, 135 };
665+
Assert.True(MaxSubsetSumNoAdjacentClass.MaxSubsetSumNoAdjacent(input) == 330);
666+
}
667+
#endregion
668+
669+
#region NumberOfWaysToMakeChange
670+
[Fact]
671+
public void NumberOfWaysToMakeChange()
672+
{
673+
int[] input = { 1, 5 };
674+
Assert.True(NumberOfWaysToMakeChangeClass.NumberOfWaysToMakeChange(6, input) == 2);
531675
}
532676
#endregion
533677

@@ -536,6 +680,20 @@ public void BinaryTreeDiameterClassTestCase1()
536680

537681

538682

683+
684+
685+
686+
687+
688+
689+
690+
691+
692+
693+
694+
695+
696+
539697

540698

541699
#region TaskAssignment

0 commit comments

Comments
 (0)