所以我在2-3树中找不到正确的祖先。在任意高度的2-3树中,有几种情况需要寻找。
我的节点设计如下:
template<typename DataType>
struct node{
Node<DataType> *child1; //left-child
Node<DataType> *child2; //middle-child (3-node only)
Node<DataType> *child3; //right-child
Node<DataType> *extraChild; //for splitting purposes
Node<DataType> *parent;
DataType key1; //key1 <= key2
DataType key2; //key2 <= extraKey (only when node needs to be split)
DataType extraKey; //for splitting purposes
};
是否有算法或类似的东西可以找到节点的正确祖先?
例如,假设我们正在寻找H的祖先(所提供的树的底部),从视觉角度来看很明显,H的祖先是树的根部的H.但这需要跳过4个父链接。树可以是任意大小,这是问题。
我的目标最终是创建一个迭代器,按顺序遍历2-3树。查找祖先节点的目的是祖先节点将是叶节点的有序后继节点,叶节点是其父节点的右子节点。同样,如上面提供的示例。