public Nodes max(Nodes n1, Nodes n2) { int val1 = n1.getValue(); int val2 = n2.getValue(); return((val1 > val2) ? n1 : n2); }
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); }
/*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); }