最大化树高,同时最小化任何节点的子计数?

时间:2011-04-02 22:47:03

标签: algorithm sorting tree

我目前面临以下问题:

给定的是一个具有不可更改的根节点和n个子节点的树。 我需要优化这棵树,以便:

  1. 最小化任何节点的子计数(仅讨论节点的直接子节点,而不是其子节点等)
  2. 因此,树高最大化
  3. 树按顺序递减,因此始终是节点>子
  4. 所有节点都是<根节点。 但是,有时节点只是<根节点,而不是<或者>比另一个节点。

    任何想法,提示等都会受到高度赞赏。

    谢谢。

2 个答案:

答案 0 :(得分:0)

从你的描述中,听起来好像你只是想:(1)按照降序对节点进行排序,然后(2)如果每个节点的值严格小于前一个节点,则使每个节点成为其前一个节点的子节点,并且其前身的兄弟姐妹。这样,树的高度就是不同值的数量,这是最大值,它可能是第三个条件。

我不禁怀疑你想要更复杂的东西。我不知何故错过了这一点吗?

答案 1 :(得分:0)

我同意Alexei,我认为你想要做的是一个带有自定义插入功能的链表,该功能可以按特定顺序插入元素。 这是基于你的问题。

现在,我现在不知道你在这里想要做什么,但如果目标是保持一个有效的对象排序集合,我的猜测是使用Binary Search Tree。 按顺序遍历此树将非常容易,并返回已排序的项目列表。插入和删除也非常简单,只有平均复杂度O(log n)。