无法理解TreeNode中的Big-O.

时间:2014-04-08 04:06:04

标签: java big-o treenode

我无法理解Big 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 /假设树高度平衡。找到Big O,其中n是树中的节点数。

2 /不要认为树是高度平衡的。找到Big 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)来自何处。

1 个答案:

答案 0 :(得分:2)

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