红黑树----红黑树插入和删除结点的全程演示


引言:

    目前国内图书市场上,抑或网上讲解红黑树的资料层次不齐,混乱不清,没有一个完整而统一的阐述。而本人的红黑树系列四篇文章(详见文末的参考文献),虽然从头至尾,讲的有根有据,层次清晰,然距离读者真正做到红黑树了然于胸,则还缺点什么。

    而我们知道,即便在经典的算法导论一书上,也没有把所有的插入、删除情况一一道尽,直接导致了不少读者的迷惑,而我的红黑树系列第4篇文章:一步一图一代码,一定要让你真正彻底明白红黑树,虽然早已把所有的插入、删除情况都一一道尽了,但也缺了点东西。

    缺点什么东西列?对了,缺的就是一个完完整整的,包含所有插入、删除情况全部过程的全程演示图,即缺一个例子,缺一个完整的图来从头至尾阐述这一切。

    ok,本文,即以40幅图来全程演示此红黑树的所有插入,和删除情况。相信,一定会对您理解红黑树有所帮助。

    话不絮烦,下面,本文便以此篇文章:一步一图一代码,一定要让你真正彻底明白红黑树为纲,从插入一个结点到最后插入全部结点,再到后来一个一个把结点全部删除的情况一一阐述。

    由于为了有个完整统一,红黑树插入和删除情况在此合作成一篇文章。同时,由于本人的红黑树系列的四篇文章已经把红黑树的插入、删除情况都一一详尽的阐述过了,因此,有关红黑树的原理,本文不再赘述,只侧重于用图来一一全程演示结点的插入和删除情况。有任何问题,欢迎指正。


红黑树插入情况全过程演示

       通过本人的红黑树系列第4篇文章,我们已经知道,红黑树的所有插入情况有以下五种:

情形1: 新节点N位于树的根上,没有父节点
情形2: 新节点的父节点P是黑色
情形3:父节点P、叔叔节点U,都为红色,
[对应第二篇文章中,的情况1:z的叔叔是红色的。]
情形4: 父节点P是红色,叔叔节点U是黑色或NIL; 
插入节点N是其父节点P的右孩子,而父节点P又是其父节点的左孩子。
[对应我第二篇文章中,的情况2:z的叔叔是黑色的,且z是右孩子]
情形5: 父节点P是红色,而叔父节点U 是黑色或NIL,
要插入的节点N 是其父节点的左孩子,而父节点P又是其父G的左孩子。
[对应我第二篇文章中,情况3:z的叔叔是黑色的,且z是左孩子。]

    详细,可参考此红黑树系列第4篇文章:一步一图一代码,一定要让你真正彻底明白红黑树

 

首先,各个结点插入与以上的各种插入情况,一一对应起来,如图:

    以下的20张图,是依次插入这些结点:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17的全程演示图,已经把所有的5种插入情况,都全部涉及到了:

红黑树的一一插入各结点:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17的全程演示图完。

 

红黑树删除情况全过程演示
    红黑树的所有删除情况,
如下:

情况1: N 是新的根。
情形2:兄弟节点S是红色
[对应我第二篇文章中,情况1:x的兄弟w是红色的。]
情况 3: 兄弟节点S是黑色的,且S的俩个儿子都是黑色的。但N的父节点P,是黑色。
[对应我第二篇文章中,情况2:x的兄弟w是黑色的,且兄弟w的俩个儿子都是黑色的。
(这里,N的父节点P为黑)]
情况4: 兄弟节点S 是黑色的、S 的儿子也都是黑色的,但是 N 的父亲P,是红色。
[还是对应我第二篇文章中,情况2:x的兄弟w是黑色的,且w的俩个孩子都是黑色的。
(这里,N的父节点P为红)]
情况5: 兄弟S为黑色,S 的左儿子是红色,S 的右儿子是黑色,而N是它父亲的左儿子。
//此种情况,最后转化到下面的情况6。
[对应我第二篇文章中,情况3:x的兄弟w是黑色的,w的左孩子是红色,w的右孩子是黑色。]
情况6: 兄弟节点S是黑色,S的右儿子是红色,而 N 是它父亲的左儿子。
[对应我第二篇文章中,情况4:x的兄弟w是黑色的,且w的右孩子时红色的。]

    接下来,便是一一删除这些点12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17为例,即,红黑树删除情况全程演示:

    各个结点删除与以上的六种情况,一一对应起来,如图:

首先,插入12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17结点后,形成的红黑树为:

 

然后,以下的20张图,是一一删除这些结点12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17所得到的删除情况的全程演示图:

红黑树的一一删除各结点:12 1 9 2 0 11 7 19 4 15 18 5 14 13 10 16 6 3 8 17的全程演示图完。


 

参考文献,本人代表作之一:红黑树系列:

1、教你透彻了解红黑树
2、红黑树算法的实现与剖析
3、红黑树的c源码实现与剖析
4、一步一图一代码,R-B Tree
5、红黑树插入和删除结点的全程演示
6、红黑树的c++完整实现源码
7、 http://saturnman.blog.163.com/

全文完。

 

版权所有。转载本BLOG内任何文章,请以超链接形式注明出处。
否则,一经发现,必定永久谴责+追究法律责任。谢谢,各位。

查看评论
64楼  sql2005vs2005 2013-05-03 18:44发表 [回复]
删除部分实在是看不下去了,乱,矛盾。
1,删除12,你找到的那个所谓的当前节点x,到底是多少,是10?如果是10,10那个节点直接涂黑不就好了吗,怎么会对应到“情况1:x的兄弟w是红色的”。

2,再看删除1 的情况,删除1实际上是删除前驱0对吧,那么这里找到的x是什么,是null,好就算null是合理的,并且颜色是双重黑,其兄弟2是黑的,但其子节点不是都黑,怎么对应到“情况2:x的兄弟w是黑色的,且w的俩个孩子都是黑色的。”。

3.删除一个左右节点都不为空的节点,是删除其直接前驱还是直接后继,在删除12的时候是找的直接前驱,删除1的时候,有“可能”也是删除的直接前驱,但删除9你绝对删除的时候直接后继。到底是什么。。。
63楼  Licorice_Che 2013-04-09 20:02发表 [回复]
删除那里感觉还是有点乱啊~~~在一步一图一代吗那篇文章里面的N我理解的是后来代替被删除的节点填上去的节点。应该没错吧。第一种情况,N为新的根的时候什么都不用做么?直接就是到了N的父节点不是空进入case2了。而且在删除12的时候,取的是左子树最大值,到右面又变成了右子树的最小值好奇怪。并且在删除12的时候貌似不是case2吧,而是直接把新踢上去的节点直接涂黑了啊。
Re:  Licorice_Che 2013-04-09 20:27发表 [回复]
回复Licorice_Che:而且删除1的时候,在教你透彻了解红黑树的文章里,就是满足:当前节点为黑色,兄弟节点为红色的情况啊(也就是case2),那么需要把父节点染红,兄弟节点染黑,染黑进行相应的旋转啊。可是也没有选择=。=真的已经晕了
Re:  Licorice_Che 2013-04-09 20:03发表 [回复]
回复Licorice_Che:写错了。删除12的时候把替上去的节点直接涂红就可以了
62楼  garyzhang2681 2013-03-21 08:53发表 [回复]
为什么在删除12的时候,取的是左子树中最大的,
删除1的时候,取的是左子树中最大的,
但是在删除9的时候,取的是右子树中最小的?
61楼  LLittleb 2013-03-11 13:54发表 [回复]
请楼主大神赐教,最后三幅图我怎么看都不懂。
倒数第三幅,我的理解是:删除节点3,因为3没有右孩子,所以上溯,得8,于是3的位置数据变为8,现在,原来的8节点成为将要被删除的节点。它有右孩子17,所以将8的位置让17这个节点来替代,从而17为当前节点且为根节点。
我只是理解到这里,而且我把整个插入删除过程都做了一遍,就卡在这倒数第三幅图了。
楼主的第四篇:红黑树的C++完整实现源码 我也有疑问,已经发评论提问了。
恳请楼主赐教。
60楼  ljn409177477 2013-01-27 17:27发表 [回复]
july:在删除操作的时候,按照算法导论以及你之前几篇文章给出的伪代码中,当删除一个节点的时候,寻找其后继一定是在被删除节点的右子树当中,而你给的删除的例子当中,当删除12节点时,是将12的左子树当中的11作为后继节点,而不是右子树中的13,算法导论给的是:y = TREE-MINIMUM(z.right),寻找在比12大的当中最小的关键字结点!
Re:  ljn409177477 2013-01-27 17:40发表 [回复]
回复ljn409177477:我知道了,当13作为后继节点之后,破坏了红黑树的性质5,这种情况满足:x的兄弟结点w是黑色的,w的左孩子是红色,所以将w的颜色和w.left颜色互换,右旋得到满足红黑树性质的结果!
Re:  ljn409177477 2013-01-27 22:19发表 [回复]
回复ljn409177477:好像不对,导论中给的是case3的情况时,把x的兄弟节点w进行右旋,所以得到的并非是July给出的删除12节点的结果啊!求解啊!到底是怎样的,为什么和之前将的那几种情况不一样?
Re:  v_JULY_v 2013-01-27 22:53发表 [回复]
回复ljn409177477:case3 经过颜色调整和对w进行右旋之后,进入了case4(x的兄弟w是黑色的,且w的右孩子时红色的),此时仍需进一步调整。
Re:  ljn409177477 2013-01-28 22:24发表 [回复]
回复v_JULY_v:case4调整也没有把11调整到子树的根节点,大的方向我理解,就是y被当成z的替代品,其实相当于删除了y节点,如果y是红色,不影响;否则,所有经过y节点的路径上黑节点就少了一个,此时,将y节点的黑色向下推给y的右孩子x节点,x节点相当于变为双重黑色或者红黑色,再往下就太理解怎么让x的另一个附加的黑色一步步向上移动!也就是case1~case4是怎么来的,为什么有着4种情况?
59楼  duqi_2009 2012-12-01 10:28发表 [回复]
楼主你好,请看插入18的那张图,在插入18的时候,已经自顶向下遍历了,在遍历的过程中遇到根节点是一个4-node,那么,是应该当即把它拆分吧,即将1和12节点换成黑色,而楼主你的图是在下一张插入5的时候才进行这已步骤。
Re:  v_JULY_v 2012-12-01 11:27发表 [回复]
回复duqi_2009:说实话,不是很明白你要表达的意思?
Re:  duqi_2009 2012-12-01 22:57发表 [回复]
回复v_JULY_v:嗯,我是说,插入18的那张图片中1和12节点应该涂成黑色吧~~
Re:  v_JULY_v 2012-12-01 23:08发表 [回复]
回复duqi_2009:插入18时,1和12结点原本就是红色的,此时,只要把18代替19作为根结点,而19变为18的右孩子并19着为红色即可,无需再把1和12着为黑色呢。
Re:  giftyuui 2012-12-28 17:53发表 [回复]
回复v_JULY_v:我理解是这样的,红黑树和234 树是意义对应的,红黑树的插入和删除节点的方法有两种,一种是先从上而下找到插入点,然后从下而上做InsertFixUP,另外一种方法是在自上而下就对节点进行调整,这就是他说的,到最后插入点就不需要在向上做InsertFixUp了,这种方法相对简单点。红黑树的插入和删除节点的方法都是234树对应过来的
58楼  evermiss 2012-11-19 16:33发表 [回复]
这分析 精彩 ,感谢lz,同时为lz的奉献致敬!我很少留言,但是看到楼主这么认真的在做东西 实在忍不住,呵呵
57楼  abc645481948 2012-09-27 15:34发表 [回复]
首先感谢LZ , 能让我们看到这麽有用的文章.

指出一点小问题: 52楼说的问题我很认同,不知道是不是我们理解的有问题,还是怎么回事.
例如删除节点12时候, 对应的算法导论中 z=12(想要删除的节点), y = 11(正真要删除的节点), x=10(应该就是你说的当前节点). 应该是符合情形1 ,节点10为红色,直接途黑.

真心建议:
LZ 在插入和删除的时候, 最好在旁边注释一下怎样查找当前节点. 只写当前节点,读者应该不知道是哪个,也可能是我太菜了,第一遍没看懂,又回去看了算法导论,才对应了起来.

希望LZ 的算法图解越来越完美.再次感谢LZ.
Re:  v_JULY_v 2012-09-27 22:52发表 [回复]
回复abc645481948:EN,感谢建议,下次一定注意:-)
56楼  youqika 2012-09-16 17:37发表 [回复]
我根据你的插入序列画了一棵2-3-4树,然后一步一步对比这两种树,发现在插入16的时候二者不再有对应关系,不知道是不是我画错了,试了几次都这样。
55楼  盖世天才 2012-06-18 17:06发表 [回复]
对楼主的辛勤付出感激涕零!!!!!!!
54楼  lwjstc 2012-05-30 16:11发表 [回复]
没有全看完,其实还有一点,如果删除的节点是一个黑色节点,他没有子节点,然后p为红色,s为黑色,SL为红色,sr为红色.删除以后变成了
SL 右旋转,成了S的父指针,然后 p 左旋转变成, SL(父) p(sl的L) s(SL的SR),按照说明不是说删除的节点没有子节点直接删除么。
53楼  lufthansa 2012-05-15 13:41发表 [回复]
这些教城从头到尾到底能不能连贯啊?比如第一步删除12这个是教程2的情况1,兄节点为红,双侄为黑,实际操作只是绕自己做了一个右旋然后换色就平衡了,但是按情况1一开始就要绕父节点左旋了,左旋后变成教程2的情况4,又要旋,反正是不可能变成上面图上所示的变换完成的那样了。再往下本来只有变13那路的现在13那路都不知道怎么处理了。有谁能把这一步的过程说下么?就是第一次的删除,删除12这个过程。
Re:  abc645481948 2012-09-27 15:39发表 [回复]
回复lufthansa:删除节点12 的时候, 现要找到替换12的节点11(即12的中序遍历的前驱节点), 替换12, 找到节点11的字节点10 (即LZ说的当前节点), 10为红色 对应情形1, 染黑即可. 
但是我现在还不明白11怎么改变的颜色?
Re:  ljn409177477 2013-01-27 22:20发表 [回复]
回复abc645481948:不是吧,删除12是找其后继节点吧!
52楼  gjt19910817 2012-03-08 14:23发表 [回复]
您好。第三步插入节点 9 时好像错了?应该是情形4,你的表格里写的是情形1。刚插入9时,9是1的右孩子,需要进行一次左旋,之后进行一次右旋,最后 9 才会成为树根。所以我觉得是情形4。不知道是不是我理解的不对?
Re:  JackyZhengX1990 2012-04-12 16:21发表 [回复]
回复gjt19910817:最后一个插入17也应该是情况5!
Re:  JackyZhengX1990 2012-04-12 14:43发表 [回复]
回复gjt19910817:另外在插入15的时候也不应该是情况2,而应该是情况3,叔叔节点和父节点都是红色!
Re:  JackyZhengX1990 2012-04-12 14:04发表 [回复]
回复gjt19910817:我同意你的说法!
51楼  honpey 2012-02-25 22:06发表 [回复]
只能说这是神贴了,谢谢July,今后要多多向你学习
50楼  yu_lizhu 2011-11-07 11:23发表 [回复]
图最好有解释。这样太乱了。
49楼  michaelliudl 2011-06-17 14:05发表 [回复]
貌似有些同学没有注意到NIL[T],删除节点后调整的参数x可能是NIL[T],这时就容易理解一些了
Re:  v_JULY_v 2011-06-18 11:50发表 [回复]
回复 michaelliudl:[e03]
48楼  lizhuo8882743 2011-05-07 17:30发表 [回复]
[e01]
47楼  clingingboy 2011-05-07 17:25发表 [回复]
好文:) mark一下
46楼  hyclq 2011-04-27 17:28发表 [回复]
LZ V5
45楼  v_JULY_v 2011-04-20 15:04发表 [回复]
哈哈,多谢以上 各位朋友。
44楼  networkwx 2011-04-20 15:01发表 [回复]
LZ就是西游记的孙悟空,神雕侠侣的杨过,射雕英雄传的郭靖,水浒传的西门庆。
呃,最后一个写错了,本来想改的,可是已经点了发表了。
43楼  wantuo 2011-04-05 14:05发表 [回复]
学习了,楼主辛苦了[e01]
42楼  eltonlong 2011-04-05 04:30发表 [回复]
博主,你太伟大了,等那天中国一人一票了我选你当主席[e04]
41楼  junlas 2011-04-02 13:36发表 [回复]
红黑树的应用能简单的描述一下吗?

早就知道红黑树,虽然现在我忘了,但是我一直不知道在实际开发中,哪些场合下能运用到这个数据结构?
40楼  gengchenhui 2011-04-01 15:56发表 [回复]
算法?
39楼  wlw472167267 2011-04-01 11:41发表 [回复]
二叉树不错
38楼  v_JULY_v 2011-04-01 10:51发表 [回复]
to newstudent_never:二叉平衡树的理论在前几篇文章有所提及。至于,你所提到的做一个n路平衡查找树的图解(即B-树),容我日后考虑。:D。
Re:  v_JULY_v 2011-06-11 02:08发表 [回复]
回复 v_JULY_v:B树已经写了。
37楼  v_JULY_v 2011-04-01 10:48发表 [回复]
to newstudent_never:红黑树是一种平衡的二叉搜索树没错,但stl中的map其实本质上也是一颗红黑树,:D。
36楼  风吹雪散 2011-04-01 10:37发表 [回复]
楼主有这样的做学问的态度,实在是可敬,国内很缺少楼主这样的肯花时间与人分享心得,且用最简单的方法描述问题的 人。建议楼主把平衡二叉树的理论加上,结合这篇文章,做出一个n路平衡查找树的图解出来(即B-树)
35楼  风吹雪散 2011-04-01 10:37发表 [回复]
之前从来不知道什么叫做红黑树,只知道stl中的map。但是看到你详细的图解,发现是2叉查找树,非平衡的,把查找时间复杂度降低到logN。
34楼  v_JULY_v 2011-04-01 10:16发表 [回复]
to newstudent never,zhenqzhiyujl:谢谢,各位。
33楼  野狐 2011-04-01 09:42发表 [回复]
[e03][e03][e03]
32楼  风吹雪散 2011-04-01 09:40发表 [回复]
大神,居然能看到这样有水平的 中国人的 算法文章,
还没自信看,只看到了图片,就知道得顶了,我要把你的文章推荐给同事看, 同时署名为 你的网名, 附加网址, 可以吗??
Re:  v_JULY_v 2011-04-01 10:07发表 [回复]
回复 newstudent_never:ok,可以,此篇文章是允许转载的。不过,转载注明出处之后,麻烦把转载网址也发我瞧一瞧,可否?
Re:  风吹雪散 2011-04-01 10:26发表 [回复]
回复 v_JULY_v:
我会先发到群上,下班后我会转到我的空间,继续研究。
我的qq空间几乎没人访问,放心好了,我会按照套路出牌,不会侵犯你的权利的
31楼  v_JULY_v 2011-04-01 08:11发表 [回复]
to hzhxxx,qanqiyin,bixuehujin:多谢各位,:D。
30楼  bixuehujin 2011-03-31 22:08发表 [回复]
先收藏 哈哈!!
29楼  努力学飞的鸟 2011-03-31 20:29发表 [回复]
学习,收藏[e01]
28楼  hzhxxx 2011-03-31 15:51发表 [回复]
[e01]

支持楼主的做法
27楼  2608 2011-03-31 14:08发表 [回复]
例如: 根节点有红黑两个子节点,红色子节点有两个黑色孙子节点,黑色子节点有两个红色孙子节点。如果从根节点删除任意一个子节点,都会导致一次以上的调整,在纸上画出来我知道该怎么调整,但是代码怎么也写不对。
26楼  2608 2011-03-31 14:03发表 [回复]
lz提供的是优化过后的代码,从代码中找不到教科书中对应的各种调整类型,根本不明白为什么要这么做,这也是我最郁闷的地方。
25楼  v_JULY_v 2011-03-31 10:15发表 [回复]
to 2608:由以上4种删除情况,可知,主要是分为:一、x的兄弟w是红色;二、x的兄弟w是黑色的(然后,根据x的兄弟w的孩子的颜色,俩黑,一红一黑,一黑一红,又可分为3种更细的情况)。:D。
24楼  v_JULY_v 2011-03-31 10:12发表 [回复]
to 2608:可知,删除情况主要(并非全部)分为4种:情况1:x的兄弟w是红色的。情况2:x的兄弟w是黑色的,且w的俩个孩子都是黑色的。情况3:x的兄弟w是黑色的,w的左孩子是红色,w的右孩子是黑色。情况4:x的兄弟w是黑色的,且w的右孩子时红色的。
23楼  v_JULY_v 2011-03-31 10:12发表 [回复]
to 2608:具体可参考此红黑树系列第二篇文章:2、红黑树算法的实现与剖析。
22楼  v_JULY_v 2011-03-31 10:09发表 [回复]
to 2608:“书中说的是删除之后如何进行一次调整,但是调整之后有可能rbt并不符合要求,还有可能进行多次调整”,是的,没错。恩,容我日后考虑,:D。
21楼  争光 2011-03-31 09:49发表 [回复]
[e01]
20楼  2608 2011-03-31 09:44发表 [回复]
不好意思,错别字:
插入的调整我没有以为,
------
插入的调整我没有意见。
19楼  2608 2011-03-31 09:43发表 [回复]
最后所形成的Rbt总是不对,郁闷了N久之后我发现,书中说的是删除之后如何进行一次调整,但是调整之后有可能rbt并不符合要求,还有可能进行多次调整,如何判断下一次调整类型把我搞得晕头转向。

不知楼主能不能在这方面多下些笔墨。
多谢!
18楼  2608 2011-03-31 09:43发表 [回复]
红黑树插入删除的各种类型调整我也算是搞清楚了,插入的调整我没有以为。但是删除操作,我发现如果按照书本中的各种调整类型来写代码的话,
17楼  v_JULY_v 2011-03-31 07:25发表 [回复]
to TianCaiBenBen:非常感谢,:D
16楼  TianCaiBenBen 2011-03-31 01:02发表 [回复]
顶,受益了。
喜欢楼主July对算法精益求精的态度,感谢分享!
15楼  v_JULY_v 2011-03-30 20:14发表 [回复]
to fxmsk,huanq8791235:谢谢,:D。to acerphoenix:承让,谢谢,:D。
14楼  acerphoenix 2011-03-30 18:45发表 [回复]
太伟大了。先顶后看,冲你这篇文章,我也得整明白红黑树
13楼  年少轻狂 2011-03-30 15:39发表 [回复]
[e01] 谢谢!
12楼  fxmsk 2011-03-30 15:37发表 [回复]
[e01] 谢谢
11楼  v_JULY_v 2011-03-30 12:09发表 [回复]
to grui,ilovehuhu:谢谢,:D
10楼  ilovehuhu 2011-03-30 11:33发表 [回复]
这个还是真的精华
9楼  grui 2011-03-30 10:44发表 [回复]
[e01][e01]
8楼  ZRage 2011-03-30 09:01发表 [回复]
支持,收藏,谢谢楼主
7楼  v_JULY_v 2011-03-29 19:18发表 [回复]
to littleliang:恩,收到,:D
6楼  v_JULY_v 2011-03-29 19:18发表 [回复]
谢谢,所有以上朋友的支持与关注,:D
5楼  kingchj 2011-03-29 17:32发表 [回复]
一图胜千言!
4楼  zenny_chen 2011-03-29 15:57发表 [回复]
呵呵,这图给力的
[e03]
3楼  littleliang 2011-03-29 14:09发表 [回复]
在《C算法》一书中,红黑树是从234树演化而来的,其中讲解了各种操作,很有价值,推荐可以参考。
2楼  cougar0709 2011-03-29 11:28发表 [回复] [引用] [举报]
mark下,这个得慢慢研究[e03]
1楼  v_JULY_v 2011-03-28 18:15发表 [回复]
ok,整完了。主要是贴图贴的幸苦。至此,红黑树系列到这第五篇文章,基本上可以宣告终结了。小功告成。:D
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值