【问题标题】:Can't understand Big-O in TreeNode无法理解 TreeNode 中的 Big-O
【发布时间】:2014-04-08 04:06:03
【问题描述】:

我无法理解大 O 问题。

问题

public boolean isHB(TreeNode root){
    if (root==null)
        return tree;
    int heightL = height(root.left);
    int heightR = height(root.right);
    boolean leftHB = isHB(root.left);
    boolean rightHB = isHB(root.right);
    if (Math.abs(heightL-heightR)>1)
        return false;
    return leftHB && rightHB;
}

1/ 假设树是高度平衡的。找到大 O,其中 n 是树中的节点数。

2/ 不要假设树是高度平衡的。找到大 O,其中 n 是树中的节点数。

我不明白的地方

1/ 解是:2T(2/n) + O(n) = O(n log(n))。我知道 2T(2/n) 来自哪里,但我不知道 O(n) 来自哪里。

2/ 解是:T(n-1) + O(n) = O(n^2)。在这种情况下,由于树不平衡,我理解 T(n-1),但我仍然无法弄清楚 O(n) 的来源。

【问题讨论】:

  • 检查height方法的实现?
  • 当然return tree 应该是return true。不过,可爱的错误。
  • 我遇到的问题是return tree,没有给出高度方法:/

标签: java big-o treenode


【解决方案1】:

查找树的高度的复杂度为 O(n)。所以额外的部分是找到高度的复杂性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多