internal static void AddItem(AVLNode node, KeyValuePair <TKey, TValue> item, object[] HashMap, int hash, ref int elementCount) { int compare = item.Key.CompareTo(node.key); while (true) { if (compare < 0) { if (node.left == null) { node.left = new AVLNode(key: item.Key, value: item.Value) { head = node, isLeft = true }; node._depthL = 1; AVLNode.BalanceBubbleUp(node, HashMap, hash); elementCount++; break; } else { node = node.left; compare = item.Key.CompareTo(node.key); } } else if (compare > 0) { if (node.right == null) { node.right = new AVLNode(key: item.Key, value: item.Value) { head = node, isLeft = false }; node._depthR = 1; AVLNode.BalanceBubbleUp(node, HashMap, hash); elementCount++; break; } else { node = node.right; compare = item.Key.CompareTo(node.key); } } else { node.value = item.Value; break; } } }
internal static void AddItem(AVLNode headNode, TKey key, TValue value, AVLTree <TKey, TValue> tree, ref int elementCount) { int compare = key.CompareTo(headNode.key); while (true) { if (compare < 0) { if (headNode.left == null) { headNode.left = new AVLNode(key: key, value: value) { head = headNode, isLeft = true }; headNode._depthL = 1; AVLNode.BalanceBubbleUp(headNode, tree); elementCount++; break; } else { headNode = headNode.left; compare = key.CompareTo(headNode.key); } } else if (compare > 0) { if (headNode.right == null) { headNode.right = new AVLNode(key: key, value: value) { head = headNode, isLeft = false }; headNode._depthR = 1; AVLNode.BalanceBubbleUp(headNode, tree); elementCount++; break; } else { headNode = headNode.right; compare = key.CompareTo(headNode.key); } } else { headNode.value = value; break; } } }
internal static void AddItem(TKey key, TValue value, QueuedAVLTree <TKey, TValue> tree, ref int elementCount) { if (!tree.ContainsKey(key)) { tree.queue.CheckRoom(tree); if (tree.head == null) { tree.head = new AVLNode(key, value, tree); elementCount++; goto LukeIDeletedYourFather; } } AVLNode headNode = tree.head; int compare = key.CompareTo(headNode.key); while (true) { if (compare < 0) { if (headNode.left == null) { headNode.left = new AVLNode(key: key, value: value, tree: tree) { head = headNode, isLeft = true }; headNode._depthL = 1; AVLNode.BalanceBubbleUp(headNode, tree); elementCount++; break; } else { headNode = headNode.left; compare = key.CompareTo(headNode.key); } } else if (compare > 0) { if (headNode.right == null) { headNode.right = new AVLNode(key: key, value: value, tree: tree) { head = headNode, isLeft = false }; headNode._depthR = 1; AVLNode.BalanceBubbleUp(headNode, tree); elementCount++; break; } else { headNode = headNode.right; compare = key.CompareTo(headNode.key); } } else { headNode.value = value; break; } } LukeIDeletedYourFather :; }