code: private String toStringIterative() {
  		final String PADDING = "                                 ";
  		final StringBuilder sb = new StringBuilder();
  		int elements_debug_local_recounter = 0;
  		Node<K, V> node = null;
  		int nodeid = rootIdx;
  		int depth = 0;
  		stackSlots.clear();
  		stackSlots.push(rootIdx); // init seed, root node
  		boolean lastIsInternal = !Node.isLeaf(rootIdx);
  		while (!stackSlots.isEmpty()) {
  			nodeid = stackSlots.pop();
  			node = getNode(nodeid);
  			if (!node.isLeaf()) {
  				for (int i = node.allocated; i >= 0; i--) {
  					stackSlots.push(((InternalNode<K, V>) node).childs[i]);
  				}
  			} else {
  				elements_debug_local_recounter += node.allocated;
  			}
  			// For Indentation
  			if (lastIsInternal || !node.isLeaf()) { // Last or Curret are Internal
  				depth += (lastIsInternal ? +1 : -1);
  			}
  			lastIsInternal = !node.isLeaf();
  			sb.append(PADDING.substring(0, Math.min(PADDING.length(), Math.max(depth - 1, 0))));
  			//
  			sb.append(node.toString()).append("\n");
  		}
  
  		// Count elements
  		sb.append("height=").append(getHeight()).append(" root=").append(rootIdx).append(" low=")
  				.append(lowIdx).append(" high=").append(highIdx).append(" elements=").append(elements)
  				.append(" recounter=").append(elements_debug_local_recounter);
  
  		return sb.toString();
  	}
docs: A iterative algorithm for converting this tree into a string
  
  @return String representing human readable tree