【发布时间】:2011-11-09 04:36:27
【问题描述】:
给定一组 n 个不同元素和一棵具有 n 个节点的未标记二叉树。我们可以用给定集合填充多少个树,使其成为二叉搜索树?
【问题讨论】:
-
链表算不算(退化的)BST?
-
我认为如果根节点是固定的,答案应该是一个,但我很困惑如果允许根节点改变会发生什么。
给定一组 n 个不同元素和一棵具有 n 个节点的未标记二叉树。我们可以用给定集合填充多少个树,使其成为二叉搜索树?
【问题讨论】:
当为程序提供“树”时(以任何语言) - 这意味着将提供根节点地址以供遍历。 因此,根据我的说法,因为提供了“根节点”意味着树结构已经构建并固定为一种类型。
所以我认为可能只有一种方法
【讨论】:
如果未标记的意思是没有指定的根节点,则设G = {G[1]..G[n]} 是原始未标记树的图集,它们分别以顶点1 ... n 为根。
那么对于每个图 G[i] 来说,只有一种填充树的方法(为什么?--考虑树的根中必须有什么值,然后递归下降)。
一旦你能证明,答案一定是k,集合中相互非同构图的数量G
【讨论】: