给定规格的二叉树中节点的最优化位置是啥?

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 步

注意:这是最简单的概念,实现可以利用主树一直排序的事实,并克服初始排序。

【讨论】:

以上是关于给定规格的二叉树中节点的最优化位置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

二叉树每个节点有一个权值,给定一棵二叉树,求权值和最大的值

计算具有给定高度的二叉树中的所有节点

java如何求二叉树中任意两个节点的最大距离

在从通用树转换的二叉树中找到节点的父亲

二叉树中的权值是啥?

二叉树中的权值是啥?