我有GeeksforGeeks的示例代码。
它说第一个解决方案是在倾斜的树上的O(N 2 )。
我有一棵这样的树。
3
\
4
\
6
\
7
\
8
\
10
但是当我浏览代码时,它似乎是O(N)。它只是递归调用height(node.right);
。
当O(N 2 )时,有人可以纠正我吗?
感谢。
答案 0 :(得分:1)
您是否注意到int height(struct node* node)
功能?对于从root开始的每个节点,bool isBalanced(struct node *root)
函数调用int height(struct node* node)
。
直接,bool isBalanced(struct node *root)
函数访问树中的所有节点(在最坏的情况下)并且每次调用int height(struct node* node)
函数(在最坏的情况下{skewed tree
}它执行n次)。因此,复杂性为O(N*N) = O(N^2)
。
此外,int height(struct node* node)
函数访问其所有子节点,因此需要访问其所有子节点(最差情况为{skewed tree
} n
)。