コード例 #1
0
        public Nodes max(Nodes n1, Nodes n2)
        {
            int val1 = n1.getValue();
            int val2 = n2.getValue();

            return((val1 > val2) ? n1 : n2);
        }
コード例 #2
0
        public bool ordered(Nodes n1, Nodes n2) // Vrai si la valeur du premier noeud est inférieure ou égale à celle du second
        {
            int val1 = n1.getValue();
            int val2 = n2.getValue();

            return((val1 <= val2) ? true : false);
        }
コード例 #3
0
        /*crée un nouveau noeud à partir des 2 plus petits noeuds de l'arbre. La valeur du noeud est la somme des valeurs de ces deux noeuds.
         * Ces deux noeuds seront désormais les fils du nouveau noeud crée, positionné à leur place dans l'arbre.
         */
        public void createfromTwoSmaller()
        {
            Nodes        n1    = new Nodes();
            Nodes        n2    = new Nodes();
            int          count = 0;
            List <Nodes> res   = new List <Nodes>();

            foreach (Nodes nt in _tree)
            {
                if (count == 0)
                {
                    n1 = nt;
                }
                else if (count == 1)
                {
                    if (ordered(n1, nt))
                    {
                        n2 = nt;
                    }
                    else
                    {
                        n2 = n1;
                        n1 = nt;
                    }
                }
                else
                {
                    if (ordered(nt, n1))
                    {
                        n2 = n1;
                        n1 = nt;
                    }
                    else if (ordered(nt, n2))
                    {
                        n2 = nt;
                    }
                }
                count++;
            }

            res.Add(n1);
            res.Add(n2);
            Nodes nd = new Nodes(n1.getValue() + n2.getValue());

            nd.setChildren(res);
            _tree.Remove(n1);
            _tree.Remove(n2);
            _tree.Add(nd);
        }