类似treap,建立一个有两个关键字的二叉树,满足以第一维关键字看是二叉搜索树,即左<父<右,以第二维看是堆,即孩子大于父亲,构建方法:按第一维关键字从小到大插入,通过一个保存二维关键字的单调栈维护正在构建的树的当前最右链,插入一个点时一直pop到单调栈中第一个能做当前点父亲的点,然后将之前最后pop出的当成当前点左孩子,将当前点记为栈顶的右孩子,加入单调栈中即可,复杂度O(n)
笛卡尔树
最新推荐文章于 2020-06-17 11:07:16 发布
类似treap,建立一个有两个关键字的二叉树,满足以第一维关键字看是二叉搜索树,即左<父<右,以第二维看是堆,即孩子大于父亲,构建方法:按第一维关键字从小到大插入,通过一个保存二维关键字的单调栈维护正在构建的树的当前最右链,插入一个点时一直pop到单调栈中第一个能做当前点父亲的点,然后将之前最后pop出的当成当前点左孩子,将当前点记为栈顶的右孩子,加入单调栈中即可,复杂度O(n)