首先是楼主的无比的敬仰,,,不过这个点树,,个人认为,,意义不大,,,
首先点树能实现的,,线段树都可以做,,唯一的优势是代码量稍少,,
然后是空间复杂度,,,O(n*2)是不对的吧,,,应该是O(n*3)的,,因为你这个就比线段树少存了一个原数组(你的n必须是2的k次方),,而树状数组是O(n)的,而不是O(n*2),,,
然后是时间复杂度,,,你这个因为是二叉树,,所以是严格的logn的,和线段树一样,,(应该比线段树稍快吧),,而树状数组的平均复杂度是小于logn的,,所谓我们常说的树状数组的常数低,,,因为它不是二叉树,,可以看百度百科的图..
所以树状数组确实可以独立于线段树之外存在,,而你这个结构的意义便没有那么大了...
另外觉得树状数组的求和的本质就是类似自顶向下的,,只是没有那么强的功能,,我也认为树状数组理论上可以实现线段树的所有功能,包括lazy思想,,,只是写起来要比线段树困难的多,,方法是用和线段树一样的递归的方式...
个人愚见,,,,,
回复 更多评论