QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8484|回复: 5
打印 上一主题 下一主题

红黑树python实现~

[复制链接]
字体大小: 正常 放大
表咯痴        

19

主题

11

听众

63

积分

升级  61.05%

  • TA的每日心情
    慵懒
    2015-5-5 10:06
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    自我介绍
    我就是我
    跳转到指定楼层
    1#
    发表于 2015-4-15 09:44 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    #!/usr/bin/env python( E3 p. k6 R1 I% R7 z: H1 a
    # -*- coding : utf-8 -*-$ z4 I# L( s* B- @6 J0 ^1 p

    % T" _( s3 B* V+ M7 fimport os
    ! L# y' V% W( p) K' L$ R' u" gimport random5 R1 L7 W1 T6 x" j
    : q. A/ u2 P7 F- d! ?9 r
    RED = 0" H, O- }# ^+ G. E4 G
    BLACK = 1
    1 n& X/ W# O% v3 Z- k7 ^8 n4 T( v! q1 M* A% f* ^
    class Vector(object):" ?* i1 {5 c, Z8 M) U; n& U
        def __init__(self,x=None,y=None):
    " b) H$ \3 L4 }. E+ D6 ~7 ~        self.x=x/ ], B: y  W* l% m: P
            self.y=y
    2 R. Y2 c( x  }4 b, Z7 C
    ; s+ ~: \7 b! U4 ~: Jclass Node(object):- M/ \* B! j& }
            """docstring for Node"""# S( `" E0 g# m; ]$ ^% D/ t
            def __init__(self,data=None,color=RED,left=None,right=None,parent=None):
    ) @, O: C4 U4 e; z4 F  T' `# {            self.data = data$ L5 k: j  j0 b, g5 ^4 s; {
                self.color = color
    ' I' s: {2 I, E, k1 J7 ~7 f4 z% H            self.left = left
    # [" Z  T9 b$ }; ]1 A/ t# y& ^            self.right = right
    + `0 O) O: F- w$ Z, u* C9 r            self.parent = parent
    7 W$ V+ ]. {  h0 I  d5 |  V. A
    5 ?6 ?; I4 Q% n$ s- b+ ]class RBtree(object):) t0 S' w: t1 S. A! r
        def __init__(self):0 D( p7 q% x9 O( B+ Q
            self.root=None
    : @. E" i- r" t, C: a) J        self.size=0# ]: I" z) t- e
    / g7 G$ T& S7 M" n1 c4 \
        def rb_rotate_left(self,node):8 l. j1 M; N! h7 }
            right=node.right
      q/ b# r* E1 z  [6 Z9 b1 R5 }
    9 C: Q7 i' o4 D9 R0 Q8 j* R& N        node.right=right.left& Z6 m' J- f4 {: g5 x: c
            if node.right is not None:
      G) n& x9 c- u; i, ?5 p            right.left.parent=node4 @# y4 @8 A& T+ v& J
    , j+ J; v8 A7 d# p7 `
            right.left=node: P6 B1 m1 W7 \8 O; N$ |( B
            right.parent=node.parent4 R9 Q, f7 Y/ q/ u- w0 `

    + ]0 w/ ?2 d- A, `2 }6 w        if right.parent is None:1 q" t2 r# T1 v9 d
                   * \& n! h, }! M5 Z
                self.root=right& j& w/ m2 X+ C0 c* g# Q
            else:! W8 D/ j) A- a/ v+ A9 u
                if node==node.parent.right:
    9 j6 [6 u: m5 v1 R                   node.parent.right=right, l; b8 }/ R- S& e  Q
                else:8 ^+ [, f1 a& I3 G' c2 u
                       node.parent.left=right& W1 l) g* I6 Y
            node.parent =right% T0 r$ w" P9 u+ e. N7 W

    % e& i6 K4 q8 V; a* z: w( k( r! R8 V) ]1 ^' ]0 Z& j0 U3 P) n
        def rb_rotate_right(self,node):
    % }. I  R6 a7 \4 h4 r, U        left=node.left
    ; @: b  i# Y) G+ X& u        node.left=left.right6 m9 u6 ^% u6 a0 [

    3 e! I9 {7 B; z7 D        if node.left is not None:% H. M$ U: \+ R& Y% @
                left.right.parent=node+ P9 t; ?3 s/ C+ k- U
    6 r. s- g1 }" [6 U
            left.right=node
    5 \' r9 D+ r2 |; q4 j* K        left.parent=node.parent
    , x2 S$ G  |, @. P2 F$ W3 w7 J( B4 q: m4 R! G% c1 z3 _+ q+ k
            if left.parent is None:6 e  v. n+ `! C  P7 b
                self.root=left
    : ~; k2 a2 X7 L4 \2 \        else:2 ^* s0 t+ m+ d! C: G0 s* t% {
                if node==node.parent.right:
    + ?4 y. [- h1 k; \# ?" [0 d                node.parent.right=left
    : i5 G% a( [- Q            else:
    , U) g8 I& h5 R2 {                node.parent.left=left
    * a3 Q  [4 i* S; z/ |        node.parent=left+ y# a3 w' B0 f7 n% T, a
    7 @, ?: n, ]1 p: M: }$ e
        def rb_insert_rebalance(self,node):
      O: g7 c& L5 }$ s- l        parent=node.parent
    9 t5 _' k  @  H+ W9 Z        while parent and parent.color==RED:; v* W0 N3 V! |+ h
                gparent = parent.parent  L/ \9 f% j, _0 ?8 M/ s8 b! e2 u
                if parent==gparent.left:
    6 Z2 k/ ^' V+ ?' s' m                uncle=gparent.right, l8 }" F4 G( E+ q, A! y" e2 |& Z
                    if uncle and uncle.color==RED:
    ' t# w/ ~. |: `& L9 L' O                    uncle.color=BLACK9 Z& S; l# c* T5 Q5 {+ |
                        parent.color=BLACK% t/ Z! t1 w, ~. b5 K! w+ ^; x
                        gparent.color=RED$ ^" U$ \# ]  d& K( R' m
                        node=gparent. ?8 j  c& G0 H2 P4 k! H( J
                    else:
    ' ~% p1 P$ F. N4 l- S                    if parent.right==node:
      |8 [% q' `) a4 Q                        self.rb_rotate_left(parent)
    " \6 O: w8 F; G4 L                        tmp=parent
    * K! {9 N2 L: r& H* y; ~; @                        parent=node) ], T, g% P) s( ]
                            node=tmp
    ! f) ?: B8 _  p/ f7 k2 C4 r                    parent.color=BLACK
    - X- j& s5 e& q7 w9 E, a0 Z; y, [                    gparent.color=RED
    $ F# `  Y" w/ z2 r0 `
    " h4 K4 B* |; K                    self.rb_rotate_right(gparent)0 ^2 r( B: P9 W2 I

    $ m6 n+ F9 G9 A( S                    if uncle:" c6 C  }! R" a' I
                            if uncle.right:" _0 y5 R4 Z6 |
                                node=uncle.right# e! {3 E: R# ?# F) t3 `/ f5 _! J. d' a
                else:# s! ?' S* S) M2 s' J& H. p0 |/ h
                    uncle=gparent.left# i) |/ b# \- s! ?
                    if uncle and uncle.color==RED:
    / b7 }, U# X% s3 H                    uncle.color=BLACK+ D4 l6 B( \8 Y' X4 D
                        parent.color=BLACK
    ! m; ]: |0 M  O4 Y: N' |                    gparent.color=RED( V$ ~8 i) Y4 B% P/ P; ]* m" M
                        node=gparent
    . `2 \' i9 z& a2 y! K1 H1 K                else:
    : O. y& w5 k( m9 \                    if parent.left==node:
    6 j" B! L" Z! \0 u6 b                        self.rb_rotate_right(parent)
    , O" a+ @& n& i8 ~5 ?; j                        tmp=parent3 L6 q- t" v9 [2 q
                            parent=node3 z0 u0 W; V) T1 ?, U, m
                            node=tmp5 C% Y5 {9 e# c+ q. i
                        parent.color=BLACK
    7 B8 O* P+ C9 o/ j  Y6 c2 {" Z2 g                    gparent.color=RED( m2 n1 V, R: G
                        self.rb_rotate_left(gparent)1 L9 p( ^7 g+ ~
    3 o% K* I$ n$ Y# t8 b/ @$ e
                        if uncle:
    , P8 S/ ^  p- u. s, W1 \* Y                        if uncle.left:
    9 n  _1 j5 p) ?                            node=uncle.left
    3 _- E8 g. R7 @' L            parent=node.parent+ h9 F" s( X' A. x
    3 |- V2 m) ^7 u  a3 N2 t: Q
    / }$ r) K" Z+ p; h7 I2 k
            self.root.color=BLACK! l8 N, b) f+ N9 j6 T7 {
            
    2 _5 k! j8 E( _  z; z4 E    # g" R7 [) s9 g4 Q+ q2 m
        def rb_search_auxiliary(self,node):
    . ]+ S( ?) f2 o# z' P$ d1 p+ D1 |        tmp=self.root
    / P1 g% g6 M3 V! O$ x        parent=None% H& Y* E  N5 V/ c" s
            while tmp is not None:
    8 R& o' A: L' ^/ c  t            parent=tmp; i' T# ?7 T5 N3 P. Y9 Y
                cmp=self.cmp(node,tmp): L) d" c7 ?1 `: x- f
                if cmp<0:
    ( V1 [/ q) m8 S9 B, U                tmp=tmp.left1 R7 {/ N8 t6 Q% {
                else:
    * n( h( r0 P3 H, k: c  s: H+ b                if cmp>0:
    7 P7 x# y+ t7 V5 F6 s0 R                    tmp=tmp.right  f3 d( ~. n+ \6 W; v- k/ d
                    else:0 b. h8 @; Y! @0 K2 ^9 S, y
                        return tmp,parent
    . m" t" R! q+ Z* v( f
    ( ~' \7 A' h! ~- L  R# M7 @        return None,parent) d* R- Y9 y* ~# u- v
    9 R/ }: F0 O- I+ J- U6 g0 p
        def rb_insert(self,data):
    8 J8 V, @+ r7 k+ P        tmp=None
    9 `! |8 D/ h) S! j, i        node=Node(data)0 u, o( `& W7 G& i4 W
            tmp,parent=self.rb_search_auxiliary(node)
    . k+ x+ h4 |( A" W+ G+ O9 p$ k
    ' c# Q$ K" {# S* I. h5 ?8 O  z        if tmp is not None:( T, q+ R' [6 l) A: V
                return
    7 x, |6 @+ z2 Z3 J0 l! I
    ) G: g- s) x  G        node.parent =parent2 O+ p* e' C* {0 C
            node.left=node.right=None5 S" N- }4 o6 c$ K9 J+ m
            node.color=RED
    1 i/ s0 ]& s0 [" f' W* I2 x! r9 _
            if parent is not None:: `6 B) a' k5 F

    8 I$ ]; D! v% \            if self.cmp(parent,node)>0:7 ^% @, B2 [, V/ t+ R7 ^  q3 y0 A: T
                    parent.left=node6 Q& k! s/ N6 g) D, T  {$ w
                else:
    0 V: M3 Y& j8 X# Z4 j8 Y/ O                parent.right=node
    ! I8 d2 o+ R; i        else:# g3 }1 R# q  n& A0 P
                self.root=node$ F# J! |) }# S% Y9 k6 U
            return self.rb_insert_rebalance(node)
    & @' }) f& `, r5 f8 r. j& S4 {6 d& Z& `! n4 t. t# k' r) B: g. n
        def rb_erase_rebalance(self,node,parent):9 z' c8 b" o+ g9 w2 z5 u
            while((node is None or node.color==BLACK)and node !=self.root):* S% }1 Z3 J, }6 }# q
                if parent.left==node:
    0 D& i4 J& v6 ~3 {0 |8 w( N# Q                other=parent.right
    0 B! S2 a+ m# W$ Z+ p7 {7 j0 [1 M                if other.color==RED:2 m" d' J* {* q  B  ^
                        other.color=BALCK
    2 I, j( t7 J, X( i- m: T                    parent.color=RED
    9 h+ r9 _; |! X1 l, b                    self.rb_rotate_left(parent)
    + I. w; D8 |" {) P+ j                    other=parent.right
    + J7 e. u! W+ z" f$ H5 I" z; E                if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color ==BLACK):" v' n6 O( H# t/ Y
                        other.color=RED7 N/ `- ^+ Q6 O" K2 p3 m( R
                        node=parent" y. s' V& K( a% b7 S: P
                        parent=node.parent6 j4 Y. E% u4 Z0 B
                    else:
    : ?8 ?$ x% h, b9 B9 y3 x6 O1 y( c0 f                    if other.right is None or other.right.color==BLACK:- p' P+ S7 i: P% s6 a8 Z4 W
    ! r' S; l% n. g9 T
                            if other.left is not None:
    2 U" I6 k. _! z6 ?/ ]& W+ @                            other.left.color=BLACK
    & l) ^; D3 O, y$ {+ f. @                        other.color=RED+ C. Y; P9 a8 C9 ~
                            self.rb_rotate_right(other)
    : f# M0 G+ q0 H                        other=parent.right
    # t3 I# i7 A8 q$ j1 p, n# \. V+ L, x& e5 _7 E2 [) A
                        other.color=parent.color
    & Q, F" S- [& d3 x( ]                    parent.color=BLACK
    ) V& `( a, r: z- `, e                    if other.right is not None:
    , {4 y9 Y  {  ^8 i5 Y/ H+ o                        other.right.color=BLACK% a+ U5 d5 J! z. c
                        self.rb_rotate_left(parent)5 ~( H. w% T; @
                        node=self.root/ F8 Y% F# ?, T* ?$ Y0 ]4 _% q
                        break
    % i1 s" e% E4 A6 J5 s5 ?            else:
    4 [7 _+ c6 p! i- I  r                other=parent.left3 a& Y3 \1 ]! U2 v+ W$ ^
                    if other.color==RED:* s9 a2 D9 {/ V  e. Q+ q8 Q) M" R  B2 @1 \
                        other.color=BLACK6 a  J8 v% V7 V; T1 p0 {8 x
                        parent.color=RED- R" K! _6 @0 W
                        self.rb_rotate_right(parent)
    $ y  h- ?) @' n! J/ a$ S                    other=parent.left9 v) k& l) r6 p2 }
                    if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color==BLACK):
    , W: x+ |2 D, Q5 ?) i                    other.color=RED1 G8 R# z9 _3 b2 }1 `
                        node=parent+ e( \/ n) w* z
                        parent=node.parent
    + R! e) X, `8 ~7 Q3 _8 d                else:
    : @3 }2 p0 r! S                    if other.left is None or other.left.color==BLACK:8 k" L0 i$ ]0 J# w
                            if other.right is not None:
    : D9 X5 O4 x" p$ X& ~                            other.right.color=BLACK
      |; ?8 I  e0 C+ d
    , p+ F3 H1 f* [! g                        other.color=RED
    ( m& N. I8 r8 H) v! @/ F- E                        self.rb_rotate_left(other)
    3 d+ w& v6 V/ _' B+ q0 d                        other=parent.left
    ' k1 r5 P  G4 S% a
    4 C' w( p3 S0 {                    other.color=parent.color- d4 D! q8 Y# g5 P: Y
                        parent.color=BLACK, g& N' b3 O' }  p7 A
    " i0 t. I+ n9 O6 x& w6 c$ T
                        if other.left is not None:; A5 d/ D0 F9 X9 l
                            other.left.color=BLACK
    ( @' u( v* T" G. O( A) f% q2 l8 m) ^: E
                        self.rb_rotate_right(parent)
    / r. w& i3 w! c( a                    node=self.root+ t% ?8 H% S1 e. }9 _" _
                        break
    , r# `) H$ S+ c) I0 t& a4 U& e! B
    : E+ V  f- b/ ?; `
    ; a1 c# c/ q- u$ F6 a; @: y
    # v- B7 A4 s  V" Q* a, N        if node is not None:
    - h) [5 \1 i- F$ c- k  }. G* _9 H! G            node.color=BLACK   
    # H/ Y) u7 i) x- o( D: R
    ! L  `0 v1 T% s# C2 j    def rb_erase(self,data):
    6 F# u# o7 G' o$ C2 @        tmp_node=Node(data)  D: B- z' Q1 A4 o: t
            node,parent = self.rb_search_auxiliary(tmp_node)
    # o# G- d" e" P        if node is None:0 ~( e$ G) A+ J- J) i4 v
                print "data is not exist."* P. a: F* y5 O7 ^. \, j
                return  t7 K4 {9 S, [; G6 I6 d
            5 t+ l2 u+ G! |/ I; q5 S  i4 ~
            old =node4 y- e* `4 K6 A& n) S5 Q" }
            if node.left and node.right:6 u+ M- c1 j) y& X
                node=node.right
    ! i3 z  Q; V2 w3 ~
    4 H9 s) d% _  l( A7 N: ^. }            left=node.left
    ' [3 G) P2 S4 D9 b1 h5 e+ D            while left is not None:
      s+ C+ p3 A: @2 `" R- y6 e$ |                node =left3 O1 r9 z) w) L  m
                    left=node.left
    # k: d0 j9 D9 C5 g- y. `. S- q+ i3 _4 Q% r
                child=node.right
    0 l8 }+ V( }) l7 [: q/ j4 ?            parent=node.parent5 ~. T$ `/ n& o* T+ d3 F3 p% [; _
                color=node.color9 d' [% h. X6 I. X& X

    3 r# Z+ ^( x: a7 J& f            if child:
    ) \1 ]% x4 v: [! d5 v                child.parent=parent
    % y9 w/ r+ J7 \            if parent:
    4 G! T0 S  K/ p6 ?. ]                if parent.left==node:
    ) D5 ^; h, g% ?' X4 f9 R                    parent.left=child) X/ k9 k+ H/ ^4 g
                    else:
    7 L6 {/ f5 I% J0 c. `2 F                    parent.right=child8 d, Q7 s- s" o: w

    6 C1 o) p7 `* ^: R* k- m            else:! K- d+ P- w! B
                    self.root=child6 o; J7 M% `: Q. H7 o
    / D' D  I* G; Y, L, C6 o1 W6 o
                if node.parent==old:3 X! c# B$ F" I4 u* d* R! M' m
                    parent=node# O8 }. L; J8 P& l: e; ?
                node.parent=old.parent
    8 K' ]% T- B+ f- d$ W- O0 Q            node.color=old.color
    3 [7 ?/ i2 @5 y2 K3 ^9 b" t            node.right=old.right( x3 b9 \- C6 |( H" g
                node.left=old.left
    ; d7 [0 I( @0 N! Q1 C
    9 T# i$ _/ A+ ^1 L3 f6 u            if old.parent:# c! H: i& N0 u; G9 N: G+ T- ]2 Q
                    if old.parent.left==old:% ~! a, g8 s3 Y& h  S% B
                         old.parent.left=node
    5 J- ]3 Z# d4 N* E7 Y, E- P                else:
    5 q6 d0 e; T1 @9 H6 ?/ L3 y$ C2 i                     old.parent.right=node2 C+ s0 T8 O6 I3 x1 D' [
                else:* y3 V# P) S. ~4 G4 S9 m
                    self.root=node5 G9 {! ?' j+ w! X6 U% v! @
    7 b8 A- Y9 w6 X3 t4 m) H
                old.left.parent=node
    + A2 m. a  M- _+ ?9 s2 S            if old.right:
      s5 B, \3 d6 B5 P( b$ s                old.right.parent=node" Y1 n1 s, _/ E7 M3 M
    - f1 \( V3 v1 P
            else:
    ' u2 E  }/ P" t5 i            if node.left is None:
    . h5 @5 c. t4 {$ c. s+ G* J                child =node.right
      e5 h3 \8 v6 O& R            else:
    5 U7 z0 {  [' x6 B; T" W+ C                if node.left is not None:
    * K3 A6 Z! y( i# A                    child=node.left
    5 {; O& C1 I! d  i3 E6 B* Z! |                else:
    9 Z$ t: N) l/ j- G2 S- C; ?                    child=None
    ) Z* q/ y) u; ]. z            parent=node.parent
    7 l* j$ ]' `8 N0 ]* q& C7 u2 {            color=node.color. N5 W! _; r. o+ I& A
                if child:8 F1 }3 }, ]: J/ A- Z
                    child.parent=parent( V  N5 a5 n1 f
                if parent:
    1 q( S8 O2 Q& C7 I8 M7 Z                if parent.left==node:' U. c$ a. C1 ~  C# q
                        parent.left=child! K8 p. B  C2 p' g5 U# l7 |
                    else:
    * l" i' m$ ~: c4 o                    parent.right=child
    ' }$ t, Q4 ~& \4 h            else:$ y* L8 U; J8 N5 j6 q1 ~9 k
                    self.root=child. N4 Z3 ~; y2 {- y. W7 P- o* j5 N9 a) `

    ) U7 w* A; h$ S6 D& m' ^        if color==BLACK:. q; m, ^8 u7 q

      B5 N8 R& \/ @9 W' k; m            self.rb_erase_rebalance(child,parent)  F& a1 |" U. @8 i, Q  `

    + i' z& ?2 v- V/ S
    7 ~' w  [( K. e! H& m" x4 K1 L8 o    def rb_travelse(self,node):
    * ~; r9 Y9 c1 }, U         if node is not None:
    % n4 l9 @6 E& M+ s) w* x( Z: W             print str(node.data)+'\t'+str(node.color)0 n  H, P! l4 L2 {1 H4 u: s
                 self.rb_travelse(node.left)* p7 \* t% ]* k
                 if node.parent:3 l0 z7 t, Z0 N
                     if node.parent.color==0 and node.color==0:& S  H$ s( u. {+ V$ e8 ]0 K
                         print "error"8 c% \  Z- k/ z( Q
                         return
    / b: b+ k+ Z: |0 j* a: K+ ]$ M             self.rb_travelse(node.right)
    + u  G/ w/ E( P$ C, V  o! i             if node.parent:
    ) M; z2 N7 Z$ ~1 b; m                 if node.parent.color==0 and node.color==0:
    % `$ O- Q  p3 V) l2 A: F$ C                     print "error"
    # F5 s  o; S) J$ c& Q* M& i" Q! V7 r) @9 r                     return/ a! r. }7 `6 S  ]
    ' L0 E( u. W5 E2 x# O  F, A+ ]3 e
             return
    5 ~$ g/ s, S/ w+ M) G! f- p* ]/ c               
    ) z: \/ S# p. f3 X     # y! l4 V) E  t4 A0 O, E/ e: H
        def cmp(self,node1,node2):6 S% Z# ~0 V# D# ]! Q2 g* d
            if node1.data>node2.data :
    1 a$ v' g5 o8 ]; G# B            return 1, b$ |5 K9 Q  l; O$ Y% y& P( Y" ~, W% \
            if node1.data==node2.data :  Z9 {' ]' s3 S2 B# {4 C1 }; y
                return 0
    2 O% w8 {7 P/ V1 v9 L; f# l. T        if node1.data<node2.data:
    5 u" w. y1 W$ y5 t( t9 a            return -1) w# S6 j6 s& Z" R
    - P- o! f; T( N6 T0 V
    if __name__=="__main__":
    5 g8 p' A0 z0 B3 Y2 K( G) C- B6 V    print "main"2 v, |1 Q/ S' Q# H. [( V
        data=[28,6,39,78,6,43,61,56,71,38]- l" ?: ?& j: S4 ]4 Y) o
        #for i in range(10):: Y" u) i0 V/ c/ x- |
        #    rand_num = random.randint(0, 100)
    . U! S% A8 V/ ]& E* m3 |) f    #    data.append(rand_num)2 x3 K) u3 \7 W! u9 g
        #print data
    , D; S2 m$ x+ X- j' ?    t=RBtree()
    : C3 W) x5 {  \! c5 e; @
    ( m. B* q7 P3 @! S9 j! i+ V8 ?9 T1 m- U- G' f+ Z
        for i in range(10):
    ' W& h$ \% Z( d; _! O/ k        t.rb_insert(data[i])
    # l9 _; A3 Y$ u/ J6 Z  n0 m- q+ N# u6 d
    ) j( e2 H: Y8 k' i+ L
        t.rb_travelse(t.root)
    ) u" p/ n# F$ }; i" B1 [# t5 z% |9 E6 K) z4 q9 E* t" O4 h
        print "---------------------------------"
    3 f* k7 O* ~5 [0 [- o, |    t.rb_erase(data[7])
      @7 f* I" b7 B( `  u4 L& U        
    # Z+ s, \3 d& s& q& U! m    t.rb_travelse(t.root)
    . W! {. g0 R; u
    ; f+ }; d8 B+ p( s" q4 G: f
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    21

    主题

    12

    听众

    237

    积分

    升级  68.5%

  • TA的每日心情

    2016-12-27 16:41
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    21

    主题

    12

    听众

    237

    积分

    升级  68.5%

  • TA的每日心情

    2016-12-27 16:41
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    21

    主题

    12

    听众

    237

    积分

    升级  68.5%

  • TA的每日心情

    2016-12-27 16:41
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    21

    主题

    12

    听众

    237

    积分

    升级  68.5%

  • TA的每日心情

    2016-12-27 16:41
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    21

    主题

    12

    听众

    237

    积分

    升级  68.5%

  • TA的每日心情

    2016-12-27 16:41
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-18 02:39 , Processed in 0.698990 second(s), 79 queries .

    回顶部