给定规格的二叉树中节点的最优化位置是啥?
Posted
技术标签:
【中文标题】给定规格的二叉树中节点的最优化位置是啥?【英文标题】:What will be the most optimized position of a node in a binary tree with given specifications?给定规格的二叉树中节点的最优化位置是什么? 【发布时间】:2017-05-11 13:41:12 【问题描述】:假设我有一棵二叉树,其中一个节点可以有 0,1 或 2 个子节点。每个节点都有一个成本值,它可以是5,10,20,40。新节点的最佳放置是在具有相同或更低成本值的节点下。例如,成本值为 20 的新节点最好放在成本值为 20 的节点下,但也可以放在成本值为 5 和 10 的节点下。
该算法的主要要求是完成一个节点的左右孩子如果需要的话,即如果一个成本值为10的节点有一个成本值为10的左孩子,那么一个新的成本值为10的节点将成为上述节点的右孩子。次要要求是最大化树的整体深度。
树不能在任何时间点重新排列。如果传入节点的价值较小,则不涉及惩罚。 鉴于上述要求,我们如何确定传入新节点在树中的最佳位置?我们可以为它写一个通用的算法吗?
最初,我想先完成树的每个级别,但我认为这不是最佳选择。
【问题讨论】:
对问题的描述不清楚/不完整 例如,如果要处理的第一个节点是 40,而下一个要处理的节点是 5,会发生什么情况?有罚款吗?还是允许您“拆除”树并重新排列?如果是后者,对时间复杂度有要求吗? 按要求添加了一些细节 【参考方案1】:次要要求是最大化树的整体深度。
这有点不寻常。
最快的方法:
-
对输入值进行排序
根据第一个要求填充所有最小值节点(5's)(仍然不清楚在下降一个级别之前是否必须填充左右两个节点。如果它必须那么最大值深度将为 log2(N5) 如果允许“向左深入”而不填充右侧,则最大深度树将在列表中退化,所有右侧节点都为空。将此称为主树
从下一个值(比如 10 值节点)创建一棵树,并将这棵树附加到主树的最深分支
根据需要重复第 3 步
注意:这是最简单的概念,实现可以利用主树一直排序的事实,并克服初始排序。
【讨论】:
以上是关于给定规格的二叉树中节点的最优化位置是啥?的主要内容,如果未能解决你的问题,请参考以下文章