【发布时间】:2017-07-24 16:23:13
【问题描述】:
我正在尝试创建一个分而治之的算法,当在二叉树的根上运行时,它返回树中包含的最大平衡二叉子树的大小,或者换句话说,最大的平衡二叉树的大小叶子都在相同深度的子树。
【问题讨论】:
-
只需要一次遍历:编写一个递归函数,它为一个节点返回两个数字:
a:看到的最大平衡子树(这是输出)和b:如果该节点有平衡的孩子,然后返回深度。如果没有平衡子节点,则返回 0。您可以通过递归调用计算节点的b。如果返回的深度匹配,那么您可以为b返回 depth+1,否则为零。您需要将a更新为b。就是这样。 -
对不起,我没有关注。你能进一步详细说明吗?为什么要为一个节点返回两个数字?如果返回的深度匹配,为什么要为 b 返回 depth + 1?你用什么来更新 a 和 b ?
-
需要返回 2 个数字,因为一个 (b) 存储当前深度,如果节点不平衡,则该深度可以为零。因此需要 a 来存储当前看到的最大值,该最大值不能减少。通过更新,我的意思是一个简单的 if:if (a
-
你能停止破坏你的帖子吗?如果您想删除您的帖子,请标记以引起版主注意。
-
我看不出这是链接问题的副本。不幸的是,最初在问题中的许多细节已被用户删除。我是 SO 的新手,但我不明白为什么我的答案(我相信它确实解决了原始问题)现在遭到了反对。
标签: algorithm tree binary-search-tree graph-algorithm divide-and-conquer