public void findBestOutputBoard(Node node) {
		char[] selBoard = new char[23];
		if(node.depth == this.treeDepth) {
			node.staticEst = getStaticEstimate(node.board);
			copyBoard(node.board, selBoard);
			this.posEvalCnt++;
		} else {
			if(node.type == 'w')
				node.staticEst = Integer.MIN_VALUE;
			else if(node.type == 'b')
				node.staticEst = Integer.MAX_VALUE;
			
			for(char[] l: generatePossibleBoards(node)) {
				Node child = new Node();
				child.depth = node.depth + 1;
				child.type = (node.type == 'w' ? 'b' : 'w');
				copyBoard(l, child.board);
				
				findBestOutputBoard(child);
				
				if(node.type == 'w') {
					if(child.staticEst > node.staticEst) {
						node.staticEst = child.staticEst;
						selBoard = child.board;
					}
				} else {
					if(child.staticEst < node.staticEst) {
						node.staticEst = child.staticEst;
						selBoard = child.board;
					}
				}
			}
		}
		
		if(node.depth == 0)
			copyBoard(selBoard, node.board);
	}