节点的删除分为三种情况:

  1. 此节点是叶节点 当此节点是叶子节点的时候,如果他是红色的 直接删除即可 如果是黑色的 需要通过左旋右旋进行修复。
  2. 此节点有一个子节点 当只有一个子节点的时候,我们会将要删除的节点和它的子节点进行数值交换。然后按照当前要删除的节点是叶子节点进行处理。
  3. 此节点有两个子节点。如果有两个子节点的话,就把要删除的节点跟其后继结点进行值交换。现在问题就转化成删除这个后继结点了,后继结点有两种情况:他是叶子节点,或者只有一个子节点。然后就能转化成之前的那两种情况。