public void deleteUnderRoot(BTreeNode lnk, int v) {
		// ǰڵҶڵ㣬ֱɾԪ
		if (lnk.isLeaf) {
			lnk.remove(v);
		} else {// ڵǰĽڵϣ
			int i; // ҵһСvԪصλ
			for (i = 1; i <= lnk.numOfElements; i++) {
				lnk.ElementHighlightIdx = i;
				repaint();
				paintAll(getGraphics());
				try {
					Thread.sleep(TIME);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				if (lnk.value[i] >= v)
					break;
			}
			lnk.ElementHighlightIdx = -1;
			repaint();
			paintAll(getGraphics());
			// λþvѰԪش֮ȻɾǸ滻Ԫ
			if (i <= lnk.numOfElements && lnk.value[i] == v) {
				BTreeNode left = lnk.children[i - 1];
				BTreeNode right = lnk.children[i];
				// ԪСԪѰԪ
				if (left != null && left.numOfElements > mid - 1) {
					BTreeNode p = left;
					while (p.children[0] != null) {
						p = p.children[p.numOfElements];
					}
					int original = lnk.value[i];
					int largest = p.value[p.numOfElements];
					p.value[p.numOfElements] = lnk.value[i];
					lnk.value[i] = largest;
					 deleteUnderRoot(p, original);
//					delete(original);
					// System.out.println(original);
					// p.remove(original);
					// ԪСԪѰСԪ
				} else if (right != null && right.numOfElements > mid - 1) {
					BTreeNode p = right;
					while (p.children[0] != null) {
						p = p.children[0];
					}
					int original = lnk.value[i];
					int smallest = p.value[1];
					p.value[1] = lnk.value[i];
					lnk.value[i] = smallest;
					 deleteUnderRoot(p, original);
//					delete(original);
					// p.remove(original);
					// ϲڵ
				} else {
					merge(lnk, i, left, right);
					deleteUnderRoot(left, v);
				}
			}
			// Ѱ
			else {
				// childreni-1ΪָӦ½λ
				BTreeNode right = null;
				BTreeNode temp = lnk.children[i - 1];
				// ҪǰĽڵԪСԪԴԪ
				if (temp.numOfElements == mid - 1) {
					if (i <= lnk.numOfElements) {
						right = lnk.children[i];
						if (right.numOfElements > mid - 1) {
							System.out.println("right num:"
									+ right.numOfElements);
							this.borrowElement(temp, lnk, i, right);
						} else {
							this.merge(lnk, i, temp, right);
						}
					} else { // Ԫʧܣϲڵ
						this.merge(lnk, i, temp, right);

					}
				}

				deleteUnderRoot(temp, v);
			}

		}
	}