这个Wolfram链接谈了一些关于'Labeled'二叉树的内容。那么还有一种叫做“未标记”的二叉树吗?两者的简明解释非常好。
为什么我要搜索这个?
我想回答这个问题:
我们给出了一组n个不同的元素和一个带有n个节点的未标记二叉树。我们可以用多少种方法使用给定的集合填充树,使其成为二叉搜索树?
现在,我知道给定n个节点的二叉树的数量是第n Catalan number,但现在我很困惑:这个公式适用于上述两种类型中的哪一种?
PS:引号中的问题的一些帮助也会非常好:)
答案 0 :(得分:1)
二叉树可以为每个节点分配标签。对于具有n个节点的给定未标记二叉树,我们有n!分配标签的方法。 (考虑节点的有序遍历,我们想要映射到标签的排列1..n)
从上面我们可以看到第n个加泰罗尼亚数字给出了未标记的二叉树的数量。
以n = 3为例。我们有以下树木5树:
1. o 2. o 3. o 4. o 5. o
\ \ / \ / /
o o o o o o
/ \ / \
o o o o
一般来说,这个数字由N-th Catalan Number.
的公式给出要获得标记树的数量,您必须乘以n!因此,对于n = 3,我们总共有30棵树。基本上,对于上面五个未标记的BST中的每一个,我们创建!3 = 6个带标签的BST标记:
1: 1, 2, 3
2: 1, 3, 2
3: 2, 1, 3
4: 2, 3, 1
5: 3, 1, 2
6: 3, 2, 1
希望这有助于理解差异。
答案 1 :(得分:0)
嗯,据我所知,“未标记”意味着我们不知道这棵树的节点。 然后问题是我们有多少种方法将元素分配给节点,因此树将是二叉搜索树。
UPDATE:这意味着我们想要从N
元素为每个节点设置值,因此我们不会破坏主二叉搜索树条件。这意味着在所有节点都有值之后,我们仍然有二叉树 - 任何节点中的密钥都大于该节点左侧子树中所有节点中的密钥,并且小于该节点右侧子节点中所有节点中的密钥。树。