QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8428|回复: 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
    ; _+ z, U  z4 Q7 S  l9 n. h3 j# -*- coding : utf-8 -*-# y- L& c8 d+ Y! Y; ~7 ]

    0 {2 ?( s/ g9 b& b& }  jimport os2 F  B8 G! r' @- z* X: v
    import random: M' C. _" n' C7 w: U$ i/ a8 s8 L

    ! i5 }8 c7 Z9 j' Y' j+ E5 sRED = 0
    # {5 O) g- s) YBLACK = 1
    $ G7 {7 Q7 D  B% X6 j
    9 z; z8 N2 m$ w- Vclass Vector(object):/ ~1 \0 y+ W9 r+ z0 I7 }, X4 Z- a3 p
        def __init__(self,x=None,y=None):
    - q  A+ K- C: d! w/ d, k, J. n        self.x=x2 P! L0 k+ i! {0 c- @
            self.y=y) d, S0 A" D& A
    & w( l7 `# K6 ~0 g) m
    class Node(object):
    ) l2 r1 k2 \3 E$ X1 d9 _( L        """docstring for Node"""+ u2 R8 p6 v! ?! h: j; a* }
            def __init__(self,data=None,color=RED,left=None,right=None,parent=None):
    * y' d" t8 `  N  l3 V            self.data = data
    ! V- k0 j$ @$ o! u7 `            self.color = color! c. Z( D& B+ \' Y+ j# o
                self.left = left
    ' F0 M0 [8 \, t            self.right = right) x4 J, l* N  o' |$ c4 U* \
                self.parent = parent
    - ?* e: n! \1 Q) L8 S( W9 j7 n; p7 j1 V) v$ d% V  w$ g% ]: u8 t
    class RBtree(object):  D% O9 ~' D4 k2 N) Y' a) w
        def __init__(self):
    : e# h3 X, \% y& G+ U) d        self.root=None+ N+ q* j" G! @" O/ x+ j, r! x
            self.size=0
    2 b1 a2 Z* C' m! O& Y) Y2 Y3 \+ t. C: o# c5 I  L- e
        def rb_rotate_left(self,node):
    + z7 z% l2 R- `! w; {& b        right=node.right7 o8 E/ @/ z/ P& W1 x; W( Q$ ]) D

    ) b! ?8 X. Q7 F  e0 c" [  `        node.right=right.left
      q/ {$ \& S" p% t2 A% h9 Q        if node.right is not None:2 c; S, o$ C0 W/ C
                right.left.parent=node5 V. N4 V9 w" _2 B: _
    4 d- S3 ]/ z' l) ~5 J
            right.left=node
    3 b( Q+ E( c. }: H# D5 S" x        right.parent=node.parent8 f6 ]5 p! {1 h" I" R

    . v8 J' S/ v3 W- z, P        if right.parent is None:0 o& |% _$ \. d7 A, M0 \
                   8 k+ B& R$ I/ k& V- [  T
                self.root=right0 V$ S( n/ }% v0 X% g# e
            else:
    7 c) ^* ?% J3 S% ~, q' O            if node==node.parent.right:# ?/ |  j' u% c. V
                       node.parent.right=right. U3 [' Y# L8 F+ u) m0 r' @4 C$ f- E+ T+ j
                else:
    / d; r6 ?; A" E7 J  c  h2 r                   node.parent.left=right
    ( A' }4 H3 B1 H        node.parent =right
    7 Y# L# }. i( K2 e
    4 s% Q4 a# i; m+ c& n( g5 N1 E' C4 [
    # c! f& @* E7 V9 h: D* l$ b. p  z    def rb_rotate_right(self,node):
    ; a0 B: l" E4 N0 G% N* j3 O" U        left=node.left. J* i2 V8 Y) i, p2 a/ s
            node.left=left.right8 X0 P& p" O( U( ^) D

    $ W0 G: l9 x1 C* Z+ p5 U        if node.left is not None:
    ' z- b5 w* I) y$ J9 @            left.right.parent=node
    ) ~* K9 O- v7 j
    + R0 L5 A5 ?& y        left.right=node% z" ?* s/ X7 r: M% d( t- O6 g
            left.parent=node.parent
    - S( Y; m% [! c/ [
    1 V' h" w1 `& B0 j0 G        if left.parent is None:
    " x; H$ C3 o( i) I. C* j            self.root=left% v$ a9 N7 h% \  a5 g* [
            else:
    # @9 b# \0 b+ ?8 i3 \            if node==node.parent.right:2 r" f" U) k- K
                    node.parent.right=left) f  u5 m2 K+ `
                else:
      k% e4 X0 M3 K$ K' t& X                node.parent.left=left
    ! p: T$ l3 y' r        node.parent=left
    ) X2 l* }, I1 |% D1 N* k
    + k: i9 R! Y/ K# D3 q    def rb_insert_rebalance(self,node):
    6 C: y# H6 `$ t; u( O/ e        parent=node.parent
    5 }7 [8 _% N$ w        while parent and parent.color==RED:( [* u4 Y( ~9 i/ S
                gparent = parent.parent5 {$ q, P8 d" F: j# Z
                if parent==gparent.left:
    & t9 `8 N  b# y9 n                uncle=gparent.right- w7 }1 x, f$ _
                    if uncle and uncle.color==RED:
    4 ~/ X  w" g  o* r& q+ v4 Y                    uncle.color=BLACK
    , A. t1 j+ q! p: i/ B8 G                    parent.color=BLACK
    4 N; b% `- J7 r6 v, `                    gparent.color=RED
    $ p% f' g1 X) X8 d                    node=gparent
    ) K2 C! G' B- `5 ^* |8 B/ H$ g                else:% w* h; G5 }) G4 r; z- x
                        if parent.right==node:
    0 ^' q! D7 r) X$ p                        self.rb_rotate_left(parent)9 X6 \, e0 N& {7 Q
                            tmp=parent. B1 w' R* G9 R+ v- {0 e; R
                            parent=node9 B4 z- |1 q9 c9 C
                            node=tmp
    % m( ]. p. t: R' v/ k) k                    parent.color=BLACK
    ' w  r. U; p0 S2 p0 s- f$ A: l                    gparent.color=RED
    - ?$ O4 u0 f  [0 }2 O+ U8 Z  ?# c- t
                        self.rb_rotate_right(gparent)
      ]4 F* R9 ^8 F5 H# E: ?" Y7 G
    1 E- K7 I) r) ]0 F! _( \3 c                    if uncle:& R  |1 C' @4 h
                            if uncle.right:4 N" C3 R) \; a) A! T8 H
                                node=uncle.right. @5 }# R2 q9 y
                else:8 j( t3 v) a8 p
                    uncle=gparent.left( {6 R) i) }6 m5 _& N' O) L: |
                    if uncle and uncle.color==RED:: M" m) |4 u8 Q' z8 `
                        uncle.color=BLACK
    7 ?# h+ e( x% K                    parent.color=BLACK: {+ i4 [5 J+ o' \
                        gparent.color=RED( N- g0 C, D# W! H$ H2 n
                        node=gparent
    , C; N; b- B% ]# q  f3 U; O                else:
    - m5 Q/ \3 j% d% d2 g- c" U                    if parent.left==node:
    0 d) K( O7 ?9 w4 Z                        self.rb_rotate_right(parent)) h( ]5 M7 R# [+ F6 Q0 E4 X
                            tmp=parent% u( |8 d, h0 Z3 O0 Z  @. j
                            parent=node
    7 ]6 W  O! f7 N" ~$ X                        node=tmp
    8 h0 {/ c! h1 p" P                    parent.color=BLACK8 O4 ~( G% `' g% ~. A5 l
                        gparent.color=RED
    2 H8 d/ E( x6 ?1 W( N2 x* h                    self.rb_rotate_left(gparent)
    % Q4 T8 I. D/ J5 A: k1 W! G: D8 h8 ?8 q1 H/ z
                        if uncle:  \3 e6 p" C5 T( _9 ]; A
                            if uncle.left:. \2 F" O) o7 A6 J! }
                                node=uncle.left, |; b8 S1 B3 ?
                parent=node.parent- j- s: F3 `  C+ M5 {0 F% A/ E
    & B" [$ O, f' N$ a
    6 f5 }- `5 f' _
            self.root.color=BLACK
    : c/ O1 w) M3 q9 r" J        2 |; R8 _# X$ O# T" D
        1 A- }2 h$ Z, S% A/ h/ N- S
        def rb_search_auxiliary(self,node):
    / p; t$ ?, M. m( u        tmp=self.root0 x- l( E- r; e+ \4 _* [
            parent=None
    5 G3 h, T8 m! t        while tmp is not None:# F4 \# g* V9 [* s) O* A2 i+ r
                parent=tmp
    , c$ e$ S" |8 ?( Y0 \/ a- k+ S) I2 {            cmp=self.cmp(node,tmp): u% ]$ L6 Q1 m" I  F6 C! n
                if cmp<0:7 W/ [( R( B+ J$ }8 w) B
                    tmp=tmp.left
    3 m  ?- t4 w- m& x* t  [            else:3 f, m/ ^6 Q# W+ e' T
                    if cmp>0:
    / b9 D: T0 J$ d+ P9 P                    tmp=tmp.right
    ( Z2 x; h- A  j$ J/ {/ n                else:
    5 A2 P1 a0 P% l' `( m                    return tmp,parent0 y* i$ ^! l% k8 ?
    0 U! g2 l! I) T) Y6 y( G9 y4 k
            return None,parent9 W- l! r% p& C* ?; E0 Y* y

    " ?7 n3 b2 h8 D8 J' Z) ?/ A5 S    def rb_insert(self,data):2 `1 i4 i9 S' Z( H1 d
            tmp=None
    $ G6 m  @2 C3 |! i        node=Node(data)1 I7 G  U; V2 Y" P* o1 F+ {
            tmp,parent=self.rb_search_auxiliary(node)- {4 K8 @& S1 {* y3 a

    ) E  \, k3 B. \; D! ~( W0 J        if tmp is not None:; u( Y& l( `3 D8 O; G
                return
    7 O! Q" o# O- L1 v9 ]- t  V
    6 Q9 a$ N- {. M7 Z        node.parent =parent
    8 H: ~6 `! A) Q) R) z        node.left=node.right=None
    , q+ h7 g3 t3 k* {, T        node.color=RED1 G' ]  b& z4 D! K$ k2 A" L- J
    * \5 m5 a* A& {. H- }
            if parent is not None:9 ~8 {' }. g6 @5 Y

    ! U! \; I, {$ @+ d9 N! b3 c            if self.cmp(parent,node)>0:2 D5 K* ?# r! z
                    parent.left=node& t# u; [# a& ?
                else:
    3 r# {* S) K, r! |# w! v1 d                parent.right=node
    7 [! V3 Y' k% |# i& ^        else:4 y; r2 K8 v+ T
                self.root=node7 w/ N6 d% L0 r+ g6 }, ~1 j
            return self.rb_insert_rebalance(node)
    2 O2 a) {5 m* s8 j; I" M# g+ I- d: I1 A3 h$ ?( w: {
        def rb_erase_rebalance(self,node,parent):5 Q; n. a9 s/ `
            while((node is None or node.color==BLACK)and node !=self.root):
    * Q: e! i. n, ~% j( \            if parent.left==node:
    % a6 }! U- B3 m8 I- h0 s; u9 l                other=parent.right
    ( w6 B, ~. s3 T" j$ o                if other.color==RED:
      O! [1 F# l- s6 n* G2 R3 H                    other.color=BALCK* d! H) x8 J" v. ^% g* u
                        parent.color=RED" D4 Q5 f, D6 v% @  ~; _, J
                        self.rb_rotate_left(parent)
    3 O& s3 H9 x' c) ]: B, k                    other=parent.right
    # P8 O) h- H* P! ^' E+ r                if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color ==BLACK):
    ( x  w6 |- o* p2 e/ Q                    other.color=RED
    " C; F0 Z0 H) o- q  I                    node=parent
    ! u) k# t1 i# H1 p* G3 I4 D4 W" [                    parent=node.parent
    2 z3 a3 u3 B3 i                else:
    # y' c* C, H/ Q                    if other.right is None or other.right.color==BLACK:
    ' B5 |7 i3 y- p% F, f& u7 S# E" k' O' N& ^% ^
                            if other.left is not None:2 X% G3 R# `2 b: ^9 n  H9 o& f/ y
                                other.left.color=BLACK; u( |/ e! l$ L7 Q1 t: V/ O4 Z& v* A
                            other.color=RED4 l, R4 }4 y1 o5 h) |3 ~: M/ z& e
                            self.rb_rotate_right(other)2 y  l0 }: Q# ^* k* x5 x: t
                            other=parent.right9 c( v9 n5 V0 {  G" \9 ?# B; B
    & z) }$ N% }/ E5 P9 ?
                        other.color=parent.color
    ; a+ V, E. p; V2 g4 R. e# [                    parent.color=BLACK. @  v; T2 p% v1 j7 R" x
                        if other.right is not None:; J0 S9 ]' B7 J% A, E
                            other.right.color=BLACK: e+ m( ?8 B  U- z. \
                        self.rb_rotate_left(parent)& M9 j" o" L# F9 h+ j
                        node=self.root
    * H+ T3 F& n$ g3 b                    break
    . h+ ^% U" c  ^* {            else:
    / P* ?' p* L+ Z5 W$ l& B# _' K- \                other=parent.left8 P9 B) N7 R# }9 F: l
                    if other.color==RED:
    0 D' B) _% F% ]' ~- `- {5 d                    other.color=BLACK
    $ D; _9 A/ y2 B8 u/ d9 n                    parent.color=RED
    0 ?8 Y; p/ H6 i4 f                    self.rb_rotate_right(parent)# c- ?+ B* q7 {+ H2 g9 M& o
                        other=parent.left
    8 I5 Q. D" T/ `8 w, A0 A0 Y                if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color==BLACK):! b3 `2 b1 M6 L) H8 R
                        other.color=RED
    8 `4 ?( V" v* K+ p                    node=parent  c: R( c3 a6 D2 X" b
                        parent=node.parent
    " u& g/ c( y1 N! c' g                else:% b! N% w' d& [7 o/ P, v
                        if other.left is None or other.left.color==BLACK:$ Q4 E! P: A$ F* n9 D
                            if other.right is not None:
    ' T7 V% Y) q% Z) J/ W4 n  e- v                            other.right.color=BLACK4 q% z+ F2 `+ H

    9 O9 Z3 C- u6 T* n1 D                        other.color=RED+ T+ {( L  `0 _% n8 F- Q
                            self.rb_rotate_left(other)
    2 y) X  @; m" R) S' b+ z                        other=parent.left
    $ I; [0 o) q0 T& o7 U) e) X) n9 K5 G0 b# U! C( ^4 p% W
                        other.color=parent.color: e$ }) c2 D, `4 T% \
                        parent.color=BLACK8 q; E. ]+ M5 S# U3 h& _

      o4 `0 f% G% m1 L2 R8 D$ w3 x                    if other.left is not None:
    ) U9 L8 v( f+ a/ K- y1 s                        other.left.color=BLACK
    5 _9 ?* |/ u. A; z, D0 N1 u0 a4 s) G5 E' E4 e: b
                        self.rb_rotate_right(parent)2 I# w* ]  {: w/ B' @# P, z9 y, ~
                        node=self.root  ~  d% t# o% j& @9 _4 |  j+ e
                        break$ z, c6 x* H4 }  E% k! I
    6 Z5 i$ U/ |: f. D: w& [  z

    : j7 G# r- Q0 m- a  ]# P0 q# H' [% T( F+ \; C5 @# t
            if node is not None:
    , C' ~1 h% W; d            node.color=BLACK   
      E/ G0 @# c! ^' \6 }% l/ y
    8 O1 t6 D7 P& L$ p( G7 @" |    def rb_erase(self,data):
    6 K! j6 j+ ^) [0 u8 {- E        tmp_node=Node(data)& F& c- M, g6 I* n5 m+ u
            node,parent = self.rb_search_auxiliary(tmp_node)2 V' F. f5 C8 Z8 Z
            if node is None:. ?5 T- [9 q) k- r2 z* M7 p
                print "data is not exist.") @& d6 R# X( k; q- E- v9 U
                return8 }$ u( u6 L. y* _; ~/ Q7 C
            + y; i7 N2 q" f7 K
            old =node
    5 H! v, F% `% `( P5 a  G        if node.left and node.right:
    - `+ `9 Y  e( A4 o            node=node.right
    1 J$ _& \+ Z4 u9 R" q- y5 {( r( @5 T
                left=node.left
    3 O3 J- s% i  f- o: D" p- t, ^% @            while left is not None:: b* x; a0 q0 |: g- u# {" ^+ y  Z
                    node =left
    0 t0 U2 c, v; ]1 s: o9 D                left=node.left# I* i% r6 E7 L% _. o
    # b& r4 s  J. e# _
                child=node.right* t4 s* m' N6 o& ?7 `4 A* [
                parent=node.parent
    6 m% i" J3 @  X1 `( v! c            color=node.color* Q7 V) M+ \* ]4 v4 e

    + L1 b8 ~$ P/ [            if child:
    ' P% I" f! M. x7 g/ P  L6 ~" E                child.parent=parent- i' v) v0 [. b1 V* t
                if parent:
      n' F6 J3 t7 h$ s                if parent.left==node:- x& J$ ?! x2 r) l( h! t
                        parent.left=child
    2 W% N# \' ~  w                else:4 e9 ^# q6 F% _$ Q3 |- @
                        parent.right=child1 Z" j+ e, k" `3 D+ T6 Z, g

    " W4 T8 ]5 [" E9 t1 k3 J            else:( Y; h! E/ V1 o) d7 ]7 _
                    self.root=child
    6 w' a- E2 }) D! U" u( u8 v1 h7 V$ |  Z+ w
                if node.parent==old:( q9 Z! W  h9 E7 A8 b
                    parent=node1 e, B7 j3 `  R8 g6 `, y
                node.parent=old.parent
    3 M* D) \9 K0 F, P; K            node.color=old.color
    + s* s' [3 F9 C# [0 \, c            node.right=old.right
    2 f. ]% n' V3 H: e% Z& `$ w9 [            node.left=old.left
    2 p( Z, N3 h  d+ o
    ' X' c" k; {& C" z8 }& ?0 X            if old.parent:
    7 }. }+ @( J! K1 _: ~3 W* c                if old.parent.left==old:
    6 @1 N* B- E9 u3 v# X* s                     old.parent.left=node: o# }# G- x# o0 o
                    else:
    2 t# A8 o' M2 Y7 O1 x: L( ]                     old.parent.right=node
    + C/ m5 W3 R% j9 s& Q5 J            else:
      F, e- ]: ^1 J* }) }                self.root=node1 g8 j  {; ?/ c* c
    4 p0 u1 ~9 l" }* t! @+ V
                old.left.parent=node
    & r+ ]8 T' A2 u' Y            if old.right:
    " `0 ]2 R, u- G: a4 T2 Y$ y                old.right.parent=node! X0 L9 J" a" C" i- k( C

    , g4 t/ ~) `; b8 X5 x        else:8 ~! ?0 S% m& [2 ^
                if node.left is None:, G$ E5 R, n- l0 U* J7 G
                    child =node.right# J" _/ r' d* g: O1 p# I
                else:! V' i" Y8 [; u
                    if node.left is not None:
    ; M% `8 v0 A  O6 E                    child=node.left
    7 F9 M. l" X6 N                else:
    ) E5 `! |4 T. t$ o( _; a8 ]9 V                    child=None
    8 Y& B) \7 v  W7 ^. v$ \+ v$ _' V( C            parent=node.parent
    * O! H4 X- j, J3 e: T0 p* q& y# O2 d            color=node.color2 O$ E+ P/ v  `+ r' J
                if child:
    ) d8 H3 ]5 z7 x                child.parent=parent( R& `% t4 U& A/ A  g# q) @
                if parent:8 Q; g* W3 W+ Q+ j) k7 X
                    if parent.left==node:
      u3 i1 b' ]. z( Y5 Z" {, D                    parent.left=child
    - L$ @. x. R3 D1 O1 W                else:: L- P) A/ G# N( R) T2 m
                        parent.right=child: r$ \3 n8 i: W; R
                else:7 g! C+ X. l; B+ y
                    self.root=child
    - x0 I% Y3 B' u; }( k" |6 I# j( X. i& h( o3 c, i
            if color==BLACK:9 a( b$ q( S+ X, o* w0 p
    " f; c1 h# V$ k
                self.rb_erase_rebalance(child,parent)- L4 Z' \; W/ u! Y

    2 I0 R) D& @$ I% n4 i2 F) v. [8 M: U8 z
        def rb_travelse(self,node):) |* ]6 g; p4 b9 W
             if node is not None:+ x6 |  n" x( ?% U
                 print str(node.data)+'\t'+str(node.color)6 Q& k; R  w1 L1 G9 \4 n
                 self.rb_travelse(node.left)
    4 E6 {: f# W& |             if node.parent:* D- O# H# a, Y8 c- v
                     if node.parent.color==0 and node.color==0:
    : P6 g/ {# H5 ~0 J# `% Z" }                     print "error". S# d! A% X- Z" n
                         return* R7 d9 D/ }* B: [. J5 Q* [
                 self.rb_travelse(node.right)" w6 n' A5 D2 s" j0 g+ j! r
                 if node.parent:
    $ R8 {$ r0 s9 I% d0 g* z                 if node.parent.color==0 and node.color==0:2 V* G. m( i$ b: k
                         print "error"
    ) a% y0 ^- r; W* ^                     return* W- _+ m- q- ~" o
    3 ?, C8 b' C& G, X, T
             return
    5 y; ?. x9 i& ?                9 p4 j: q/ w, m+ D
         " I$ c2 H8 C, s+ Y7 d( Y
        def cmp(self,node1,node2):- I6 d3 ~0 h2 c
            if node1.data>node2.data :
    ! u4 g9 x) j. y, v* }1 Q' }            return 1' Q, C9 y- A; u
            if node1.data==node2.data :6 B/ c; ^7 g7 A
                return 0
    . ^  m, q2 z" U5 G. ]: k        if node1.data<node2.data:
    % o& t; x( v7 h            return -1  Q  ^8 L9 D9 q3 A

    / M9 u+ g/ k. o9 j% gif __name__=="__main__":  w% }) w$ H" I" ?
        print "main"
    7 s- J- O! `. M) B) \, ]: A+ t! w    data=[28,6,39,78,6,43,61,56,71,38]
    9 v6 A0 u( o' ^. y- @# o8 A    #for i in range(10):
    " O+ j. C9 ~* \% P: T    #    rand_num = random.randint(0, 100)
    ( ?( t8 X3 H% A5 @0 Q) f    #    data.append(rand_num)1 Y+ ?+ a) i  |/ @& Q: g
        #print data
    ' w1 `1 M/ P/ w: L7 r4 q, k9 ~2 [    t=RBtree()
    : K7 c; Z; o& ~: v7 [! H# P9 Q1 e2 O9 ]7 z7 S

    . z  F2 K, a7 R    for i in range(10):
    ( n% h  u% Q9 v$ N6 H4 X- X7 j        t.rb_insert(data[i])
    / w& I& Y4 A& W: @5 k$ [* `9 I6 O' a, n  X# h
    ' b. D5 n5 p. T! V$ w/ Y
        t.rb_travelse(t.root)! a: c. A5 I5 \( w5 v7 Y

    5 h" ^. w* @* k; R; V    print "---------------------------------"
    5 y/ ]! F2 W# |    t.rb_erase(data[7])
    ; ?. x( W$ T4 J! g0 K7 M- P        
    : X" y2 C1 f; w% M) ?    t.rb_travelse(t.root)6 B; C! p) D4 T" R
    6 A  m/ W# P6 X; ~5 j( m
    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-4-18 23:15 , Processed in 0.403099 second(s), 79 queries .

    回顶部