笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为index,一个为value。光看index的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的index都比它小,右子树都比它大;光看value的话,笛卡尔树有点类似堆,根节点的value是最小(或者最大)的,每个节点的value都比它的子树要小(或者大)。
它可以处理范围最值查询、范围top k查询(range top k queries)等问题。
如图就是一棵笛卡尔树(上方表格中每个数的编号为index,数值为value,下方是根据数据生成的笛卡尔树):
直接构造的方法是排序以后再插入,这样就需要
笛卡尔树(Cartesian Tree)
最新推荐文章于 2024-05-16 13:36:28 发布