【发布时间】:2019-03-22 16:36:48
【问题描述】:
我试图让每个父节点(每个节点)向我展示它的子树有多少胜负。
这将允许我玩一台计算机,以便计算机可以通过转到 O 获胜最多的下一个子树来优化其移动。
现在我正在尝试重新排列树,以便它可以简单地告诉我它的子树有多少胜利和失败。
到目前为止,我有一棵经过排序的树,共有 9 代。
1) 第一代有 8 个兄弟姐妹(每个都有子节点)或 X 的 8 个可能移动。
2) 第二代有 7 个兄弟姐妹(每个都有子节点)或 O 的 7 个可能移动。
3) 一直持续到最后一代的兄弟姐妹为零和一个完整的董事会。
4) 我有 986410 个可能的(完整的和不完整的)板。
此方法当前打印整个树中所有可能获胜的次数(对于 X 和 O)。但是,它会使树节点的数量增加一倍,当它应该少于原始数量时,因为并非所有节点都获胜。
public void postOrderTraverse(TreeNode T) {
counter++;
if (T == null) {
return;
} else {
postOrderTraverse(T.firstChild);
postOrderTraverse(T.nextSibling);
// checks diagonals, horizontals and verticals for a set of X's or O's
if (winOrProgress(T.board, X) == true || winOrProgress(T.board, O) == true) {
// prints the game board at this node
char[][] gameBoard = T.board;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
char value = gameBoard[i][j];
System.out.print(value);
}
}
T.firstChild = T;
System.out.print(counter);
System.out.println("Win");
}
}
}
【问题讨论】:
标签: java recursion tree tic-tac-toe