code: private void computeIJTable(InfoTree it, int subtreePreorder,
  			int subtreeRevPreorder, int subtreeSize, int aStrategy, int treeSize) {
  
  		int change;
  
  		int[] post2pre = it.info[POST2_PRE];
  		int[] rpost2post = it.info[RPOST2_POST];
  
  		if (aStrategy == LEFT) {
  			for (int x = 0; x < subtreeSize; x++) {
  				ij[0][x] = x + subtreePreorder;
  			}
  			for (int x = 1; x < subtreeSize; x++) {
  				change = post2pre[(treeSize - 1 - (x - 1 + subtreeRevPreorder))];
  				for (int z = 0; z < subtreeSize; z++) {
  					if (ij[x - 1][z] >= change) {
  						ij[x][z] = ij[x - 1][z] + 1;
  					} else {
  						ij[x][z] = ij[x - 1][z];
  					}
  				}
  			}
  		} else { // if (aStrategy == RIGHT) {
  			for (int x = 0; x < subtreeSize; x++) {
  				ij[0][x] = x + subtreeRevPreorder;
  			}
  			for (int x = 1; x < subtreeSize; x++) {
  				change = treeSize
  						- 1
  						- rpost2post[(treeSize - 1 - (x - 1 + subtreePreorder))];
  				for (int z = 0; z < subtreeSize; z++) {
  					if (ij[x - 1][z] >= change) {
  						ij[x][z] = ij[x - 1][z] + 1;
  					} else {
  						ij[x][z] = ij[x - 1][z];
  					}
  				}
  			}
  		}
  	}
docs: Computes an array where preorder/rev.preorder of a subforest of given
  subtree is stored and can be accessed for given i and j.
  
  @param it
  @param subtreePreorder
  @param subtreeRevPreorder
  @param subtreeSize
  @param aStrategy
  @param treeSize