控制高度才能稳定路径长度

二叉搜索树能根据键大小选择方向,却不自动保证路径短。若连续插入单调变化的键,无平衡措施的树可能拉成长链。平衡结构在更新之后检查额外性质,避免形状无限偏向一边。

“平衡”也不要求所有二叉叶子恰好处在同一层。AVL限制每个节点左右子树的高度差,红黑树用颜色与黑高度关系约束路径;两者通过不同不变量取得对数级树高,而不是要求整棵二叉树总是完美对称。

参考:[1] [2] [3]

局部调整保留键顺序

旋转改变一小片子树的父子连接,同时保留中序访问的键顺序。某个孩子可以上移成为局部根,原根下移,而位于二者键范围之间的子树按相应位置重新连接;这样改变形状而不改变键的排序含义。

具体结构还要维护自己的辅助记录。AVL更新高度,红黑实现可能同时旋转与变色,多键搜索树则可以拆分或合并节点。只完成链接移动、却忘记更新这些记录,就不能继续依赖原来的平衡或统计保证。

参考:[2] [4]

查询能力与维护成本一起选择

受控树高可让查找、插入、删除等操作取得相应的对数最坏上界,并继续支持最小键、最大键和范围访问。它的价值不只是让单次精确查找变快,还在于保留顺序结构带来的操作。

不同不变量会带来不同的节点字段、修复步骤和实现复杂度。选择时应根据所需操作、更新比例和资源条件比较具体方案;平衡保证也不替应用定义哪些键相等,比较关系仍须与业务所需的顺序一致。

参考:[2] [3]