public void findBestOutputBoard(Node node) {
		char[] selBoard = new char[23];
		if((node.depth == this.treeDepth) || (getOccCnt(node.board, 'w') <= 2) || (getOccCnt(node.board, 'b') <= 2)) {
//			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;
			
			List<char[]> L = generatePossibleBoards(node);
			for(char[] l: L) {
				Node child = new Node();
				child.depth = node.depth + 1;
				child.type = (node.type == 'w' ? 'b' : 'w');
				copyBoard(l, child.board);
				child.parent = node;
				node.children.add(child);
				
				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);
	}