private void trimUp(Node node) {	
		for (Node n : node.children) {
			if (n != null)
				return; // not empty, do nothing
		}
		
		// all children empty, remove node
		for (int i = 0; i < BASE; i++) {
			if (node.parent.children[i] == node) {
				node.parent.children[i] = null;
				break;
			}
		}
		
		// recursively check upwards
		if (node.parent != root)
			trimUp(node.parent);
	}