↧
由:397090770
3.2 删除操作 删除操作可以概括为以下几个步骤: (1) 查找要删除位置,时间复杂度为:O(N) 这里的时间复杂度是不是错了?既然和二叉查找树类似,那查找时间复杂度就应该为O(logn).
View Article由:zh
“如果需要删除的节点有两个儿子,那么问题可以被转化成删除另一个只有一个儿子的节点的问题。” 如果图示都是照这一句来画,则N不可能是有两个非叶子节点的节点,这样的话图就有些小问题。 还有个小问题,文中的意思是删除N的操作都是在转化到case 4之后做的吗?
View Article由:jbingqiang
1. 对于上述4中情况,是发生在节点已经删除(保证是二叉查找数),维持红黑树性质的阶段(通过重绘节点颜色或旋转)。因此,N是已经删除节点的后继节点,并非将要删除的节点; 2. 对于情况2: 首先,以N为参考节点,S变为红色,使的S树的黑色深度减1,而N树的黑色深度也已经减1,因为已经删除的N的父节点是黑的。这样P树的黑色深度减1,然后,以P为参考节点,重复以上操作。 注意对递归思想的理解。
View Article由:jbingqiang
3. 情况4的本质是:把S的黑色给N的祖先,这使得N树的黑色深度加1, SR由红变黑,相当于S的右子树的黑色深度没有变化,从而维持整棵树的红黑性质。
View Article