struct lists * list_depth[ht];
for(int i=0; i<ht; i++)
list_depth[i]=NULL;
insert_to_list(&list_depth[0], root);
for( int i = 1; i < ht; i++ )
{
struct lists * temp = list_depth[i-1];
while( temp != NULL )
{
if(temp->node->llink!=NULL)
insert_to_list(&list_depth[i],temp->node->llink);
if(temp->node->rlink!=NULL)
insert_to_list(&list_depth[i],temp->node->rlink);
temp = temp->link;
}
}
代码段的时间复杂度是多少?由于循环是嵌套的,它是否具有n ^ 2的复杂性? 它是一个在二叉树的每个深度创建元素列表的程序。 我认为是O(n)。我对吗? [N是元素数量]
答案 0 :(得分:2)
不,这是O(n * log(n)),因为您遍历树的长度,即O(log(n)),n次。