給定數量的二叉樹節點(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;
}
我希望在這裏分享更好的解決方案。
你說「置換」,但確實在樹此事的每個節點的位置? – 2012-07-09 14:55:53
@Colin D,它確實 - 它是概率分佈 – aviad 2012-07-09 14:57:50
所以節點編號,例如x = 2的情況下,我們有兩個簡單的樹:1-> 2,2-> 1? – 2012-07-09 14:59:04