曹钦翔吧 关注:31贴子:76
  • 1回复贴,共1

关于线段数与平衡二叉树的应用比较

只看楼主收藏回复

平衡二叉树支持的节点的查找、删除、插入,由于直接构建二叉树,可能导致树形蜕化成链,因一般要使用Splay、红黑树或AVL树等方法优化,保证树的平衡。由于可以在根节点储存该子树的某些总体函数值,平衡二叉树也支持对某一段数据球最大最小求和等操作。上述这些操作的时间复杂度均为O(logN)
线段树支持对某一个数据段的查找,或修改,因此在更改相应节点函数之后,一般要更新其祖宗节点的对应总体函数值,所以线段树也支持对某一段数据球最大最小求和等操作。时间复杂度也类似为O(logN)
那么,这两种数据结构能否相互代替呢,应该可以看到,线段树是一种相对静态的数据结构,一般应用是需要先进行排序,平衡二叉树是一种相对动态的数据结构,不需要事先排序。一般情况下,两者作用可以相互代替,但平衡树的各种实现方法,都具有较高的编程复杂度,不易调试,因此,我建议使用线段树代替平衡树。
但同时,也用注意到,线段树由于需要事先排序因此一定是一种离线算法,对于一些要求在线钻法的交互式问题则不能胜任,此时要解决问题可能还是需要使用平衡二叉树。


IP属地:美国1楼2007-03-03 14:05回复
    tqltql


    IP属地:美国来自iPhone客户端2楼2021-04-21 22:41
    回复