这道题目中文版翻译有错。查看英文原版后可知,题目原意为“将二叉树的parent指针替换为successor指针”,即新的节点有左子树、右子树和后继节点三个指针。 使用这三个指针,可以在O(h)时间内找到节点的parent指针(先找到子树的最右侧叶子,然后取其后继)。 搜索和插入操作本身不需要parent指针,因此所需时间不变仍为O(h),但是插入时需要考虑对successor指针的维护,也是O(h),因此总时间为O(h)。 删除操作比较麻烦,不过应该只需要用到常数次找parent节点的操作,因此这方面是O(h),但是需要更新被删除元素的前驱节点的后继指针,“找前驱节点”这个操作好像不一定是O(h),当前驱节点在当前节点祖父的位置时?期待讨论~
(先找到子树的最右侧叶子,然后取其后继)。
33,019
社区成员
35,334
社区内容
加载中
试试用AI创作助手写篇文章吧