假设我有一个二叉树,其中一个节点可以有0,1或2个子节点。成本值与每个节点相关联,可以是{5,10,20,40}。新节点的最佳放置位于具有相同或更低成本值的节点下。例如,成本值为20的新节点最好放在成本值为20的节点下,但也可以放在成本值为5和10的节点下。
此算法的主要要求是在需要时完成节点的左右子节点,即,如果成本值为10的节点具有成本值为10的左子节点,则具有成本值10的新节点将成为上述节点的正确子节点。次要要求是最大化树的整体深度。
树不能在任何时间重新排列。如果传入节点的值较小,则不会涉及惩罚。 鉴于上述要求,我们如何确定树中传入新节点的最佳位置?我们可以为它编写一般算法吗?
最初,我想首先完成树的每个级别,但我认为它不是最佳的。
答案 0 :(得分:0)
次要要求是最大化树的整体深度。
这有点不寻常。
最快捷的方式:
注意:这是最简单的概念,实现可以利用主树随时排序并完成初始排序的事实。