“单调栈可在线性扫描中为每个元素寻找支配边界,Cartesian Tree把这组弹栈关系固化为同时满足中序与堆序的树。平衡括号树表示则利用 DFS 的入栈/出栈生成括号序列,再在该序列上支持导…”
编码与合法性 ​
对有序根树做深度优先遍历:进入节点写 1(左括号),退出写 0(右括号),
导航操作 ​
findclose
first-child、next-sibling 可由相邻括号和匹配操作恢复。用分块 excess 摘要与微表可在
编码例子 ​
根有两个孩子,左孩子又有一个孩子,其括号串为
信息与边界 ​
有序根树数量是 Catalan 数
Excess 搜索原语 ​
findclose
第
导航原语如何落到 excess ​
设节点
高效实现把这些动作统一成三类查询:
findclose(p):向右找第一个 excess 回到进入前高度的位置;enclose(p):向左找包住的最近更低高度; fwdsearch(p,d):向右找 excess 相对当前位置变化为的最早位置。
位串合法性只是前缀 excess 非负且最终为零;它不自动提供
参考资料
- Guy Jacobson, Space-Efficient Static Trees and Graphs, FOCS, 1989.
- J. Ian Munro, Venkatesh Raman, Succinct Representation of Balanced Parentheses and Static Trees, SIAM J. Comput., 2001.