具有给定规范的二叉树中节点的最优化位置是什么?

时间:2016-12-27 09:18:28

标签: algorithm optimization tree

假设我有一个二叉树,其中一个节点可以有0,1或2个子节点。成本值与每个节点相关联,可以是{5,10,20,40}。新节点的最佳放置位于具有相同或更低成本值的节点下。例如,成本值为20的新节点最好放在成本值为20的节点下,但也可以放在成本值为5和10的节点下。

此算法的主要要求是在需要时完成节点的左右子节点,即,如果成本值为10的节点具有成本值为10的左子节点,则具有成本值10的新节点将成为上述节点的正确子节点。次要要求是最大化树的整体深度。

树不能在任何时间重新排列。如果传入节点的值较小,则不会涉及惩罚。 鉴于上述要求,我们如何确定树中传入新节点的最佳位置?我们可以为它编写一般算法吗?

最初,我想首先完成树的每个级别,但我认为它不是最佳的。

1 个答案:

答案 0 :(得分:0)

  

次要要求是最大化树的整体深度。

这有点不寻常。

最快捷的方式:

  1. 对输入值进行排序
  2. 根据第一个要求填写所有最小值节点(5)(仍然不清楚是否必须在下一个级别之前填入左右两个节点。如果必须那么最大深度将为log2(N 5 )如果允许“向左深入”而不填充右侧,则最大深度树将在列表中退化,所有正确的节点为空)。
    将其称为主树
  3. 从下一个值(例如10个值的节点)创建一个树,并将此树附加到主树的最深分支
  4. 根据需要重复步骤3
  5. 注意:这是最简单的概念,实现可以利用主树随时排序并完成初始排序的事实。