MCPcopy Create free account
hub / github.com/codenameone/CodenameOne / deleteNode

Method deleteNode

Ports/CLDC11/src/java/util/TreeMap.java:5068–5104  ·  view source on GitHub ↗
(Node<K, V> node)

Source from the content-addressed store, hash-verified

5066 }
5067
5068 private void deleteNode(Node<K, V> node) {
5069 if (node.right == null) {
5070 if (node.left != null) {
5071 attachToParent(node, node.left);
5072 } else {
5073 attachNullToParent(node);
5074 }
5075 fixNextChain(node);
5076 } else if(node.left == null) { // node.right != null
5077 attachToParent(node, node.right);
5078 fixNextChain(node);
5079 } else {
5080 // Here node.left!=nul && node.right!=null
5081 // node.next should replace node in tree
5082 // node.next!=null by tree logic.
5083 // node.next.left==null by tree logic.
5084 // node.next.right may be null or non-null
5085 Node<K, V> toMoveUp = node.next;
5086 fixNextChain(node);
5087 if(toMoveUp.right==null){
5088 attachNullToParent(toMoveUp);
5089 } else {
5090 attachToParent(toMoveUp, toMoveUp.right);
5091 }
5092 // Here toMoveUp is ready to replace node
5093 toMoveUp.left = node.left;
5094 if (node.left != null) {
5095 node.left.parent = toMoveUp;
5096 }
5097 toMoveUp.right = node.right;
5098 if (node.right != null) {
5099 node.right.parent = toMoveUp;
5100 }
5101 attachToParentNoFixup(node,toMoveUp);
5102 toMoveUp.color = node.color;
5103 }
5104 }
5105
5106 private void attachToParentNoFixup(Node<K, V> toDelete, Node<K, V> toConnect) {
5107 // assert toConnect!=null

Callers 3

removeLeftmostMethod · 0.95
removeRightmostMethod · 0.95
removeMiddleElementMethod · 0.95

Calls 4

attachToParentMethod · 0.95
attachNullToParentMethod · 0.95
fixNextChainMethod · 0.95
attachToParentNoFixupMethod · 0.95

Tested by

no test coverage detected