牛客5709732号 level
获赞
179
粉丝
0
关注
7
看过 TA
3
中南大学
2018
Java
IP属地:未知
逻辑思维较强型
私信
关注
2016-10-12 18:34
中南大学 Java
建堆和删除一个元素或者插入,维护堆不是一样的操作吗?为什么不是一样的复杂度呢
徘徊的路人甲:建堆O(n),删除O(logn),你想一下,现在有一个现成的堆,用数组存储表示,删除的话删掉堆顶元素,将数组最后一个数放到堆顶,整个堆里就只有这个新交换来的结点可能不满足堆的性质,那么只需要将这个结点依次向下转移,直到转移到符合堆性质的地方,转移的次数跟堆的高度有关,也就是O(logn),删除结点是有一个结点可能不满足堆性质,要调整,建堆过程是所有结点不满足要调整,所以,如果采用暴力建堆,也就是初始数组为空,每次插入一个结点然后调整满足堆性质,复杂度就是O(NlogN),不过一般采用自底向上的下滤,对内部节点依次下滤,复杂度是O(n),建议看看清华邓俊辉的mooc视频,数据结构,讲的很清晰
0 点赞 评论 收藏
分享
2016-09-10 10:41
中南大学 Java
层次遍历如何存储非完全二叉树啊,用一维数组
帕吉:可以把左右子结点为空的地方赋一个“空值”,但是这样可能比较浪费空间。所以非完全二叉树不是很建议用数组存储
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务