예제 #1
0
 public static void ResetArbres()
 {
     Arbres.Clear();
     foreach (var iArbre in ArbreBinKit.iArbres)
     {
         Arbres[iArbre] = ArbreBinKit.NewArbreBinInt(iArbre);
     }
 }
예제 #2
0
        public void _52a_Enlever_Plusieurs_Feuilles()
        {
            var ab = ArbreBinKit.NewArbreBinInt("1 3 2 | 6 8 7 | 4 |");

            AreEqual(5, Enlever(ref ab, new[] { 1, 3, 2, 6, 8 }));
            AreEqual(0, Enlever(ref ab, new[] { 1, 3, 2, 6, 8 }));
            AreEqual("n 7 4 |", ab.EnTexte());
        }
예제 #3
0
        public void _52b_Enlever_Plusieurs_Complexe()
        {
            var ab = ArbreBinKit.NewArbreBinInt("1 3 2 | 6 8 7 | 4 |");

            AreEqual(2, Enlever(ref ab, new[] { 4, 3 }));
            AreEqual(0, Enlever(ref ab, new[] { 4, 3 }));
            AreEqual("1 n 2 | n 8 7 | 6 |", ab.EnTexte());
        }
예제 #4
0
        public void _51d_Enlever_BrancheSimple()
        {
            var ab = ArbreBinKit.NewArbreBinInt("1 n 2 | n 3 | n n 7 6 | 5 | 4 |");

            AreEqual(true, Enlever(ref ab, 3));
            AreEqual("1 n 2 | n n 7 6 | 5 | 4 |", ab.EnTexte());
            AreEqual(true, Enlever(ref ab, 5));
            AreEqual("1 n 2 | n 7 6 | 4 |", ab.EnTexte());
        }
예제 #5
0
        public void _51b_Enlever_Unique()
        {
            var ab = ArbreBinKit.NewArbreBinInt("5");

            AreEqual(false, Enlever(ref ab, 1));
            IsNotNull(ab);
            AreEqual(true, Enlever(ref ab, 5));
            IsNull(ab);
        }
예제 #6
0
        public void _40_EstValide()
        {
            // Arbres valides
            Tester(nameof(EstValide), EstValide, AllTrue);

            // Arbres invalides
            foreach (var iArbreInvalide in ArbreBinKit.iArbresInvalides)
            {
                AreEqual(false, EstValide(ArbreBinKit.NewArbreBinInt(iArbreInvalide)), iArbreInvalide);
            }
        }
예제 #7
0
 private void TesterCloner(Func <ArbreBin <int>, ArbreBin <int> > cloner)
 {
     foreach (var iArbre in ArbreBinKit.iArbres)
     {
         var ab    = ArbreBinKit.NewArbreBinInt(iArbre);
         var clone = cloner(ab);
         AreEqual(ab.EnTexte(), clone.EnTexte(),
                  "La copie n'est pas exacte");
         IsTrue(ÉnumérerNoeuds(ab).Zip(ÉnumérerNoeuds(clone), (a, b) => a != b).All(x => x)
                , "La copie n'est pas profonde");
     }
 }
예제 #8
0
        public void _51f_Enlever_BiBrancheComplexe()
        {
            var ab = ArbreBinKit.NewArbreBinInt("1 3 2 | 6 8 7 | 4 |");

            AreEqual(true, Enlever(ref ab, 4));
            AreEqual("1 n 2 | 6 8 7 | 3 |", ab.EnTexte());
            ab = ArbreBinKit.NewArbreBinInt("0 2 n 3 | 1 | 6 8 7 | 4 |");
            AreEqual(true, Enlever(ref ab, 4));
            AreEqual("0 2 1 | 6 8 7 | 3 |", ab.EnTexte());
            ab = ArbreBinKit.NewArbreBinInt("1 3 2 | 6 8 7 | 5 |");
            AreEqual(true, Enlever(ref ab, 5));
            AreEqual("1 3 2 | n 8 7 | 6 |", ab.EnTexte());
            ab = ArbreBinKit.NewArbreBinInt("1 3 2 | n 7 6 | 9 8 | 5 |");
            AreEqual(true, Enlever(ref ab, 5));
            AreEqual("1 3 2 | 7 9 8 | 6 |", ab.EnTexte());
        }
예제 #9
0
        public void _51c_Enlever_Feuille()
        {
            var ab = ArbreBinKit.NewArbreBinInt("1 3 2 | 5 7 6 | 4 |");

            AreEqual(false, Enlever(ref ab, 0));
            AreEqual(true, Enlever(ref ab, 1));
            AreEqual("n 3 2 | 5 7 6 | 4 |", ab.EnTexte());
            AreEqual(false, Enlever(ref ab, 1));
            AreEqual(true, Enlever(ref ab, 7));
            AreEqual("n 3 2 | 5 n 6 | 4 |", ab.EnTexte());
            AreEqual(true, Enlever(ref ab, 5));
            AreEqual("n 3 2 | 6 4 |", ab.EnTexte());
            AreEqual(true, Enlever(ref ab, 6));
            AreEqual("n 3 2 | n 4 |", ab.EnTexte());
            AreEqual(true, Enlever(ref ab, 3));
            AreEqual("2 n 4 |", ab.EnTexte());
            AreEqual(true, Enlever(ref ab, 2));
            AreEqual("4", ab.EnTexte());
        }
예제 #10
0
        public void _51e_Enlever_BiBrancheSimple()
        {
            // Nombre pair on fait monter à gauche
            var ab = ArbreBinKit.NewArbreBinInt("1 5 2 |");

            AreEqual(true, Enlever(ref ab, 2));
            AreEqual("n 5 1 |", ab.EnTexte());

            // Nombre impair on fait monter à droite
            ab = ArbreBinKit.NewArbreBinInt("1 5 3 |");
            AreEqual(true, Enlever(ref ab, 3));
            AreEqual("1 n 5 |", ab.EnTexte());

            // Nombre pair on fait monter à gauche
            ab = ArbreBinKit.NewArbreBinInt("1 n 2 | n 3 | n n 8 7 | 6 | 4 |");
            AreEqual(true, Enlever(ref ab, 4));
            AreEqual("1 n 2 | n n 8 7 | 6 | 3 |", ab.EnTexte());

            // Nombre impair on fait monter à droite
            ab = ArbreBinKit.NewArbreBinInt("1 n 2 | n 3 | n n 8 7 | 6 | 5 |");
            AreEqual(true, Enlever(ref ab, 5));
            AreEqual("1 n 2 | n 3 | n 8 7 | 6 |", ab.EnTexte());
        }