我无法理解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)来自何处。
答案 0 :(得分:2)
找到树的高度具有复杂度O(n)。所以额外的部分是找到高度的复杂性。