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 树的插入、删除和再平衡算法,并评估了其性能。