[英]Binary Search Tree - Deletion
关于删除操作,特别是节点正好有 2 个子树的情况,我知道选择找到右子树的最小元素来“替换”相应的元素是保留排序属性的方法。
但是为什么不选择对应元素的左子树的最大元素呢?
我认为 sorted 属性不会中断,也想不出反例。
据我所知,没有“具体”规则总是选择右子树的最小元素。 从对称性来看,使用左子树中的最大元素也可以。
从逻辑上讲,BST 的中序遍历会产生排序后的输出。 考虑以下输出
....A B C....
这里, A
和C
分别是有序前驱(基本上是B
的左子树的最大元素)和有序的后继( B
的右子树的最小元素)。 用C
或A
替换B
不会更改排序顺序,因此没有理由说C
是替换B
的唯一选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.