【发布时间】:2017-05-11 13:41:12
【问题描述】:
假设我有一棵二叉树,其中一个节点可以有 0,1 或 2 个子节点。每个节点都有一个成本值,它可以是{5,10,20,40}。新节点的最佳放置是在具有相同或更低成本值的节点下。例如,成本值为 20 的新节点最好放在成本值为 20 的节点下,但也可以放在成本值为 5 和 10 的节点下。
该算法的主要要求是完成一个节点的左右孩子如果需要的话,即如果一个成本值为10的节点有一个成本值为10的左孩子,那么一个新的成本值为10的节点将成为上述节点的右孩子。次要要求是最大化树的整体深度。
树不能在任何时间点重新排列。如果传入节点的价值较小,则不涉及惩罚。 鉴于上述要求,我们如何确定传入新节点在树中的最佳位置?我们可以为它写一个通用的算法吗?
最初,我想先完成树的每个级别,但我认为这不是最佳选择。
【问题讨论】:
-
对问题的描述不清楚/不完整 例如,如果要处理的第一个节点是 40,而下一个要处理的节点是 5,会发生什么情况?有罚款吗?还是允许您“拆除”树并重新排列?如果是后者,对时间复杂度有要求吗?
-
按要求添加了一些细节
标签: algorithm optimization tree