【发布时间】:2017-02-01 21:40:24
【问题描述】:
给定二叉树节点数 (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;
}
我希望在这里分享更好的解决方案。
【问题讨论】:
-
你说的是“排列”,但是树中每个节点的位置重要吗?
-
@Colin D,确实如此 - 它是概率分布
-
所以节点被编号,例如对于 x=2 我们有两个简单的树:1->2, 2->1?
-
@Alexey 我认为他只是指拓扑,节点本身是相同的(如本示例所示)。并且左右节点的拓扑结构不同。
标签: java algorithm tree binary-tree catalan