java - 无法理解 TreeNode 中的 Big-O

标签 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) 从何而来。

最佳答案

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

关于java - 无法理解 TreeNode 中的 Big-O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927321/

相关文章:

java - 为 JTree 中的 DefaultMutableTreeNode 分配唯一 ID?

java - 复选框节点渲染器和编辑器

java 无法创建正确的接口(interface)

java - 执行 MongoTemplate.aggregate 而不进行行检索

java - 你好,我正在努力理解这段代码中 if 语句的 O 表示法运行时

algorithm - Big-O:你怎么知道针对特定的时间复杂度应该给出什么样的算法?

java - Java 中数组的不常见语法

java - java继承的概念..help

javascript fs 在文件中搜索数组中的字符串。避免不良表现

c# - TreeNode.EndEdit 与 NodeLabelEditEventArgs.CancelEdit