【发布时间】:2018-04-22 14:59:55
【问题描述】:
我必须为我的大学课程创建和描述一种算法,该算法获取 BST 树 T 并创建满足属性的新 BST 树 T'(并且尽可能快):
1) T' 具有与 T 完全相同的键值
2)T'是一棵红黑树
到目前为止,我只有一个想法:随机化0或1。如果为0,则从T的左子树中获取最大关键节点并将其插入到T'中,否则从右子树中获取最小关键节点T 并将其插入 T'。这是为了确保红黑树至少在某种程度上是平衡的。插入可以是任何标准的 RB 插入。
获得 min/max 的复杂性是 O(h),并且由于需要对 T 中的每个节点重复此操作,因此这将变得相当高。我还可以在左子树的最大节点和右子树的最小节点处保留一个指针,这样可以解决每次遍历树的整个高度的问题。
您如何看待这个解决方案?我很确定它可以做得更好。抱歉,如果有明显更好的解决方案,但我在互联网上找不到答案,而且这只是我在大学的第二个学期,我没有太多编程经验。
【问题讨论】:
标签: algorithm tree binary-search-tree red-black-tree