Algorithm 增强minDiff的红黑树
所以我有以下问题: 你有一组数字,S,存储在一棵红黑的树上。您试图将minDiff添加到红黑树中,该树给出S中两个最接近的数字之间的绝对差。例如,如果S={1,18,23,62,79,100},minDiff将返回5(| 23-18 |) A) 演示如何扩充红黑树以有效支持此操作,同时保持插入、搜索和删除的O(lgn)运行时间 B) 演示如何输出创建MinDiff的两个数字的值。对于上面的示例,您将输出23和18 我的困惑: 我停留在问题的最开始部分,即增加什么。我可以想到一些简单而低效的解决方案,比如让每个节点保持自身和其父节点之间的绝对差异。然而,似乎应该有一些优雅的解决方案,不需要查看树的每个值来确定解决方案Algorithm 增强minDiff的红黑树,algorithm,binary-search-tree,red-black-tree,Algorithm,Binary Search Tree,Red Black Tree,所以我有以下问题: 你有一组数字,S,存储在一棵红黑的树上。您试图将minDiff添加到红黑树中,该树给出S中两个最接近的数字之间的绝对差。例如,如果S={1,18,23,62,79,100},minDiff将返回5(| 23-18 |) A) 演示如何扩充红黑树以有效支持此操作,同时保持插入、搜索和删除的O(lgn)运行时间 B) 演示如何输出创建MinDiff的两个数字的值。对于上面的示例,您将输出23和18 我的困惑: 我停留在问题的最开始部分,即增加什么。我可以想到一些简单而低效的解决方
我希望我能展示更多我的作品,但我完全被难住了,不知道从哪里开始 添加到树中的信息必须满足2个要求:
node.minVal = node.left ? node.left.minVal : node.val
node.maxVal = node.right ? node.right.maxVal : node.val
node.minDiff = min(
node.left.minDiff,
node.right.minDiff,
node.val - node.left.maxVal,
node.right.minVal - node.Val
)