给定二叉树节点的数量(X),编写一个方法来返回X个节点的二叉树的随机排列数。
示例:
X=1: 1
o
X=2: 2
o o
o o
X=3: 5
o o o o o
o o o o o o
o o o o
我最终得到的是:
public static int numOfPerms(int numOfNodes) {
if (numOfNodes<=2 && numOfNodes > 0) {
return numOfNodes;
}
int res = 1;
for (int i=1; i<=numOfNodes; i++) {
res = res*(4*i-1)/(i+1);
}
return res;
}
我很乐意在这里分享更好的解决方案。