public static bool ArbolVacio(BTNode <T> node) => node == null;
/// <summary> /// Método que Divide un nodo en nodos nuevos al momento que se llena un nodo /// </summary> /// <param name="x"></param>Clave a insertar /// <param name="Xder"></param> /// <param name="P"></param>Nodo sucesor /// <param name="K"></param> Posición donde debe insertarse la nueva clave /// <param name="Mda"></param>Clave que sube como nuevo padre de los nodos creados /// <param name="Mder"></param>Nuevo nodo donde van los valores mayores a la media private void DividirNodo(T x, BTNode <T> Xder, BTNode <T> P, int K, ref T Mda, ref BTNode <T> Mder) { int posmda; posmda = K <= Min ? Min : Min + 1; Mder = new BTNode <T>(); //nuevo nodo for (int i = posmda + 1; i < Orden; i++) { Mder.Values[i - posmda] = P.Values[i]; // es desplaza la mitad derecha del nuevo nodo, la clave mediana se queda en la izquierda Mder.Children[i - posmda] = P.Children[i]; } Mder.Cuenta = Max - posmda; // claves en el nuevo nodo P.Cuenta = posmda; // claves que quedan en el nodo original //Inserción de X y la rama derecha if (K <= Orden / 2) { MeterHoja(x, Xder, P, K); // inserta nodo en izquierda } else { var newval = K - posmda; MeterHoja(x, Xder, Mder, newval); }//extrae mediana del nodo izquierdo Mda = P.Values[P.Cuenta]; Mder.Children[0] = P.Children[P.Cuenta]; // Rama Inicial del nuevo nodo es la rama de la mediana P.Cuenta = P.Cuenta - 1; // disminuye por que se quitó el valor medio }
public Btree() { root = null; }
public BTNode() { Values = new T[5]; Children = new BTNode <T> [5]; Cuenta = 0; }
public override void AddChild(BTNode _childNode) { base.AddChild(_childNode); mChildrenResults.Add(BTResult.Executing); }
public BTParallel(BTNode _parentNode, BTPrecondition _precondition = null) : base(_parentNode, _precondition) { }
public BTDecorator(BTNode _parentNode, BTPrecondition _precondition = null) : base(_parentNode, _precondition) { maxChild = 1; }
public BTWeigthSelector(BTNode _parent, BTPrecondition _precondition = null) : base(_parent, _precondition) { }