如果给出了数据,我正试图找出可用树数的计数。 ex)如果有8个不同的数据,可以制作多少棵树?
答案 0 :(得分:0)
问题并不完全清楚。我假设你想要完全二进制(resp.ternary)树的数量正好有n个叶子(如果你总是在寻找n个节点,你将能够从我的结果中找到它;如果你想要的话可以存储一组给定的n个不同数据的树的数量,即考虑到在这样的树中存储数据的所有方法,那么你也应该能够轻松地获取它。)
让我们考虑完整二叉树的情况。如果你想要n个叶子,你可以在左子树中调用k叶子的数量,你将在右边有n-k。这些子树分别具有N(k)和N(n-k)种可能性,
然后你有N(n)=sum(N(k)*N(n-k), k=1..n-1)
。 N(1)= 1。
这是加泰罗尼亚数字的(a?)定义:https://en.wikipedia.org/wiki/Catalan_number
N(n)=C(n-1)
你可以为三元树做类似的事情