The original description of the k-d tree recognized that rebalancing techniques, used for building an AVL or red-black tree, are not applicable to a k-d tree, because these techniques involve cyclic exchange of tree nodes that violates the invariant of the k-d tree. For this reason, a static, balanced k-d tree is often built from all of the k-dimensional data en masse. However, it is possible to build a dynamic k-d tree that self-balances when necessary after insertion or deletion of each k-dimensional datum. This article describes insertion, deletion, and rebalancing algorithms for a dynamic, self-balancing k-d tree, and measures their performance.
翻译:k-d树的原始描述指出,用于构建AVL树或红黑树的重平衡技术不适用于k-d树,因为这些技术涉及树节点的循环交换,会违反k-d树的不变性质。因此,静态平衡的k-d树通常需要从所有k维数据整体构建。然而,在每次插入或删除k维数据后,仍有构建动态k-d树并在必要时自平衡的可能性。本文描述了用于动态自平衡k-d树的插入、删除和重平衡算法,并评估了其性能。