public void split(BTreeNode parent, int pos, BTreeNode children) {

		state = State.split;
		// Ԫز뵽parent,ƶӵλ
		for (int i = pos; i <= parent.numOfElements; i++) {
			parent.value[i + 1] = parent.value[i];
			parent.children[i + 1] = parent.children[i];
		}
		BTreeNode newNode = new BTreeNode(0, 0);
		parent.children[pos - 1] = children;
		parent.children[pos] = newNode;

		parent.value[pos] = children.value[mid];
		parent.numOfElements += 1;

		// Ԫشchildrenɾ
		children.numOfElements = mid - 1;

		// תƺ벿Ԫ½ڵ
		for (int i = 1; i <= m - mid - 1; i++) {
			newNode.value[i] = children.value[mid + i];
		}
		// תƺ벿ֺ½ڵ
		for (int i = 0; i <= m - mid - 1; i++) {
			newNode.children[i] = children.children[mid + i];
		}
		// ޸newNodeֵ
		newNode.numOfElements = m - 1 - mid;

		newNode.isLeaf = (newNode.children[0] == null);

	}