Extend your work on the OCC logo to add shapes that \'curve1 the blue Cs into looking something more like the actual logo: Solution import java.awt.Color; import java.util.Comparator; /** * a straightforward red-black tree category. */ public category RedBlackTree extends BinarySearchTree Associate in Nursing empty RedBlackTree which will solely settle for Comparables as * items. */ public RedBlackTree() /** * Constructs Associate in Nursing empty RedBlackTree that orders its things in keeping with the * given comparator. */ public RedBlackTree(Comparator c) /** * The nodes during a red-black tree store a color beside the particular information * within the node. */ category Node extends LinkedBinaryTreeNode } /** * Adds one information item to the tree. If there\'s already Associate in Nursing item within the * tree that compares up to the item being inserted, it\'s \"overwritten\" * by the new item. Overrides BinarySearchTree.add as a result of the tree must * be adjusted when insertion. */ public void add(Object data) BinaryTreeNode n = root; whereas (true) else if (comparisonResult < 0) n = n.getLeft(); } else zero if (n.getRight() == null) n = n.getRight(); } } } /** * Removes the node containing the given price. will nothing if there\'s no * such node. */ public void remove(Object data) else if (node.getLeft() != null && node.getRight() != null) 2 kids, Copy forerunner information in. BinaryTreeNode forerunner = predecessor(node); node.setData(predecessor.getData()); node = (Node) predecessor; } // At this time node has zero or one kid Node pullUp = leftOf(node) == null ? rightOf(node) : leftOf(node); if (pullUp != null) regulate if pullUp could be a double black. if (node == root) else if (node.getParent().getLeft() == node) else if (isBlack(node)) } else if (node == root) to drag up once deleting a root means that we have a tendency to empty the tree setRoot(null); } else lookout if (isBlack(node)) node.removeFromParent(); } } /** * Classic formula for fixing up a tree when inserting a node. */ personal void adjustAfterInsertion(Node n) issues, if they exist if (n != null && n != root && isRed(parentOf(n))) to ascertain if additional work // needed if (isRed(siblingOf(parentOf(n)))) // Step 2b: reconstitute for a parent United Nations agency is that the left kid of the // forebear. this may need one right rotation if n is // also // a left kid, or a left-right rotation otherwise. else if (parentOf(n) == leftOf(grandparentOf(n))) setColor(parentOf(n), Color.black); setColor(grandparentOf(n), Color.red); rotateRight(grandparentOf(n)); } // Step 2c: reconstitute for a parent United Nations agency is that the right kid of the // forebear. this may need one left rotation if n is // also // a right kid, or a right-left rotation otherwise. else if (parentOf(n) == rightOf(grandparentOf(n))) setColor(parentOf(n), Color.black); setColor(grandparentOf(n), Color.red); rotateLeft(grandparentOf(n)); } } // Step 3: Color the foundation black setColo.