QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8429|回复: 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
    ! v3 P+ m- A: o$ E# -*- coding : utf-8 -*-3 k+ S3 s7 [  K0 R5 [7 P: k
    , n. `+ `4 F, p  \4 N
    import os' @* G) x2 X/ ]- M1 Z* _! A
    import random* r# m( V- d! {9 {& R6 M7 x2 c
    " M9 }8 g1 \+ ~. q& P
    RED = 0
    5 w  }0 @4 q" i$ D' kBLACK = 17 b( L$ B! m8 l; s# S9 k

    3 ?) |. R2 B, K6 L; N8 c7 A/ |class Vector(object):
    0 v- a" ^0 z+ c- c    def __init__(self,x=None,y=None):
    % b% j4 j. H. a        self.x=x
    9 M: N# |* n0 w" v' X2 E% k        self.y=y
    " l% y8 d7 r- A( z; {2 I7 x" v: L& S" F0 i: @  `( N
    class Node(object):" `: U6 C: R; D
            """docstring for Node"""2 C: y' b  S/ e8 g
            def __init__(self,data=None,color=RED,left=None,right=None,parent=None):2 T4 [  ~& k6 F8 S! G
                self.data = data
    8 L2 w2 d7 C% ]8 E9 i            self.color = color
    . J' |& X$ z: W$ ~; W5 p% V            self.left = left
    + ]5 J, h9 [, [* p2 r7 @: C- q1 g            self.right = right
    + V0 T4 c  T2 d4 b' _            self.parent = parent( ]1 ~- d) V0 ~/ N  S1 W; y

    ( K" H( X- |* a) x* k9 Y& r4 jclass RBtree(object):9 K# D% w* |: e
        def __init__(self):* B% `- Z8 K* ]
            self.root=None! t0 B% N+ P+ m2 V! |8 D; N% u6 L, b
            self.size=06 \/ ]  y' |/ g9 U& n
    4 o) i6 d4 d7 `. I
        def rb_rotate_left(self,node):
    * c7 l" r8 a& v        right=node.right
    . K/ A3 m4 i2 ^9 T6 h9 Q2 g4 K" _1 u! l
            node.right=right.left0 s7 w" `) i7 Z% ^& T/ p3 h. Q
            if node.right is not None:- k6 }4 [0 ]. Z
                right.left.parent=node# o5 Q) n9 ~$ Z2 q6 [. q: v" B

    ! v; k3 _6 X  G; n: m. |        right.left=node
    8 O/ s& g# ^( y        right.parent=node.parent
    * x! c' k2 X) z4 b% W% u
    2 n( w2 J9 i$ ?; n) [        if right.parent is None:
    / L$ s- ?' P5 R# X2 r# p4 `               
    0 y, {: N$ b" V) F' N0 s0 S  q            self.root=right6 ]! l( L8 n, w8 `
            else:
    / ]9 u' U/ [/ g, Z            if node==node.parent.right:' y7 b$ d8 X: V5 K; p- A$ r" V
                       node.parent.right=right3 ?! E1 l1 P% p, K" u; _
                else:
      j' J+ ]5 q$ z                   node.parent.left=right
    * H% H- @2 b/ o5 C        node.parent =right
    5 [- X( ^+ z, c& [0 h# N
    # L$ u  J4 @- ?( @* k5 m8 N; M0 R7 Q9 K  ~
        def rb_rotate_right(self,node):
    + e) i, D0 e9 `' \$ V0 }5 h! K1 h4 Y        left=node.left
    1 A% M+ q' N3 I9 ^; M        node.left=left.right" m5 g) l: R# R( A$ m+ R# Z, f  C
    & h! o; C  ?$ k6 [
            if node.left is not None:/ s4 N( E' ?3 z1 C- p9 K
                left.right.parent=node
    2 I; [, k; I" I# o" l/ w
    * r- @8 }; N; w3 K% r& C1 V        left.right=node0 _; o+ x; ^1 m& @$ `, ]
            left.parent=node.parent# K/ ]8 y. _0 q3 O# O+ k6 I+ R' C

    , m+ u! A9 ^% T6 i3 ]        if left.parent is None:! B6 m. P4 \/ n0 ]) t+ z) B
                self.root=left1 n+ l* W9 l9 ~3 B
            else:
    . P! Z/ h% a8 V- w            if node==node.parent.right:" D1 ?7 y7 t: G: B
                    node.parent.right=left
    3 t5 h/ i9 V2 a+ s5 o! o            else:
    + y3 d% P. y$ `  @7 R. S                node.parent.left=left
    5 p8 M/ b+ d- a+ T        node.parent=left
    , D* v+ x. q0 O! R
    1 T- @# i: L( w; b0 K    def rb_insert_rebalance(self,node):
    4 A+ ?$ T4 N1 o. Q# b0 C5 n3 O        parent=node.parent# x7 a% @& O0 _  ^) y' \+ z3 l
            while parent and parent.color==RED:* N. B! f/ s2 i4 e7 j2 r
                gparent = parent.parent
    7 E; J% r" z. U- d" t: _            if parent==gparent.left:
    0 U, J! H5 i" e* E5 t( \                uncle=gparent.right
      P+ j8 X$ |8 z+ e                if uncle and uncle.color==RED:1 f$ m5 M: L, @, n; V; e5 I7 ~- Y
                        uncle.color=BLACK
    ! m& @/ ~$ P/ {) U1 _* v  F9 X                    parent.color=BLACK- G& g6 j) O5 U6 ^
                        gparent.color=RED
    5 B) q! q8 D, g: b7 A                    node=gparent6 n' y) c- @: H9 j4 k7 I
                    else:
    # K# A9 r3 y* }. g) F. p                    if parent.right==node:' d5 h. r* r+ V" i
                            self.rb_rotate_left(parent)
    # v5 y" \1 @) p) W                        tmp=parent
    ( i" M6 z7 C" W/ ?                        parent=node' |+ ~+ v1 c; L
                            node=tmp
    - V- [, _$ H% i1 B                    parent.color=BLACK; ?( t+ o; Z$ o" R/ x
                        gparent.color=RED
    0 ~" b# a9 S4 w4 g+ J7 P2 y- c3 h4 E( x# F8 X7 C
                        self.rb_rotate_right(gparent)! L( I8 }& U, k; s! U0 i0 B
    & ?2 j3 l6 [6 t( X8 q! a! \6 d
                        if uncle:
    4 H0 Q/ i( ?) F. T) U  F                        if uncle.right:5 k+ U' @8 u; f/ W; C* F9 c2 I- D
                                node=uncle.right
    3 h* B% u1 b/ D5 a            else:
    1 x- _. d. B8 Q- [0 C& x                uncle=gparent.left
    / q" {  {: ?3 y2 V! r                if uncle and uncle.color==RED:
    7 {! |" h: `. ^. S$ r4 |0 `                    uncle.color=BLACK
    , Y- c. e; k! m+ o* J; K                    parent.color=BLACK
    ; R/ J5 J$ [3 e8 @/ w' P                    gparent.color=RED5 O+ Y/ {- n0 S' i' i
                        node=gparent( f, @5 r- Q. y+ g0 |
                    else:
    / M2 X6 X: t- G% h% ^                    if parent.left==node:
      F8 r" s9 p# M                        self.rb_rotate_right(parent)" @3 J+ u8 |& d6 B! N' B# {
                            tmp=parent
    - E# m  Y4 A( l5 t! j                        parent=node4 t% @( J2 V8 U6 k/ O/ J
                            node=tmp
    + s1 j7 g  \3 u% [# Z8 j  t  t                    parent.color=BLACK' R4 x0 T2 ^0 o& L* x* N
                        gparent.color=RED
    & y$ l% d9 Q- D- v/ d                    self.rb_rotate_left(gparent)
    " W7 B5 n& X- x! M. x* j
    $ U( [$ Z( U0 a' l: U+ D                    if uncle:
    : W2 h! T7 T: X/ ~7 g' O                        if uncle.left:
      G3 N% Q7 z' S. @. i1 p* v                            node=uncle.left7 H5 a8 ]7 x! |$ Q$ ~1 o  v; i
                parent=node.parent6 S1 f7 ^9 w4 C8 l
    6 v' {: P% W! ]& z5 A6 u3 R
    0 O7 B( r3 S8 X4 U
            self.root.color=BLACK
    6 [4 E1 p$ m  L6 Z3 ]# ^+ B* L        ' s# S: P/ o( G5 Q: ?% }1 e
       
    4 |1 ~3 ?3 G- u* m& ~    def rb_search_auxiliary(self,node):
    ) M7 |: G2 s: ?; t        tmp=self.root7 v  w% Z1 H9 G
            parent=None
    8 u8 }+ L( }" ^# v! u, \        while tmp is not None:2 }# `! q9 C3 L. r4 z: B
                parent=tmp
    8 X" Z# [( b& H3 U) b( \3 K* ~( s1 p            cmp=self.cmp(node,tmp)
    6 p1 i0 J) y5 r" k! L& e            if cmp<0:' W" f1 }. L3 Y  G* `% c' f/ n. L9 ~
                    tmp=tmp.left) Q6 E/ c/ }+ i$ g' H6 Z7 u
                else:
    : L" z7 r% q$ n% d2 D5 c/ o  A: s3 Z                if cmp>0:; H) U! p( v2 n( K; w2 d: `
                        tmp=tmp.right! r6 }, W7 j* b$ r- r: y( x
                    else:5 |6 C0 O! m4 [4 D5 ^
                        return tmp,parent
    ) K5 v3 u) a) I
    7 \& [: n/ B" b6 O5 w        return None,parent
    3 v4 U. v: X( v4 m
    # l5 i1 Y' O  g7 y2 n+ \) L    def rb_insert(self,data):' ^3 Q8 f8 V* d& ]
            tmp=None  i8 h/ I" ~/ }1 x; Y# j" j- p
            node=Node(data)* j! A$ P+ k- H6 g: J
            tmp,parent=self.rb_search_auxiliary(node)7 ~* ]9 h6 {2 }6 Z; h0 Y0 u
    & P8 \/ \% ~* L: }) l1 f
            if tmp is not None:6 N: @/ _5 ~. T5 V* X0 U# }) |
                return 2 N8 S/ J1 C) ?% |
    3 Q0 u, |8 i4 d1 J
            node.parent =parent) G7 F2 t3 s& O. W3 X1 y
            node.left=node.right=None' f$ R4 z9 C, |( k
            node.color=RED2 D4 M2 E; f# D1 q
    ! E" P6 s# \' {' A( I
            if parent is not None:' o+ r9 r; I" [5 {7 E

    * X! v8 B* R* A1 k* I0 e7 j            if self.cmp(parent,node)>0:& O9 P% U  J4 [8 u. w7 K  U& z
                    parent.left=node/ Y7 M( S/ O. J. z/ l( B
                else:' ^1 W# m% B7 S
                    parent.right=node7 {, ~, b) L9 @5 ?  Z0 l6 E# D; }8 e
            else:
    3 _3 e3 Z$ K: Y" a            self.root=node
    + G/ A4 |$ E$ Z+ X( }        return self.rb_insert_rebalance(node)1 h3 z" D3 h2 w
    3 \" |9 U! R. Y& {. S5 s8 G
        def rb_erase_rebalance(self,node,parent):5 {6 X' j* F* c7 D3 x! G
            while((node is None or node.color==BLACK)and node !=self.root):
    4 u$ m9 c- C6 R$ c2 x            if parent.left==node:3 v" Q% t! D% k8 [9 x
                    other=parent.right
    ; e" u" r( ]: f! B8 \. b0 z5 i                if other.color==RED:# P+ W( H( I3 P! }/ R% v
                        other.color=BALCK( L: ^# V! h9 O# |1 q  k7 }7 z
                        parent.color=RED( d$ L/ P$ H' U+ A
                        self.rb_rotate_left(parent)' E9 s+ z* K; v+ z- z
                        other=parent.right, o1 i* D; a5 o6 q5 O7 m
                    if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color ==BLACK):6 q# f# O/ t7 |. j/ x2 w+ o( z
                        other.color=RED
    6 H! Q' c* F: ?1 u# ]                    node=parent3 U& A1 f- c3 n/ A' o4 D
                        parent=node.parent
    5 a. m1 e- ]# M9 U                else:
    0 L& Z$ _' O3 {& Q5 i$ }* |' ^/ z                    if other.right is None or other.right.color==BLACK:
    ) n! X+ U% C1 E* v" I2 i) X! p6 x7 u1 l$ d* o7 y9 n# @
                            if other.left is not None:9 G# m1 I) R" q7 i' N
                                other.left.color=BLACK
    4 V2 ], A7 J4 U# f7 o4 {7 V                        other.color=RED3 \! e: M+ o& M
                            self.rb_rotate_right(other)" y% _* W+ F' _5 n, S, N& N" J
                            other=parent.right1 U! p: G% M' V

    6 M& L; h4 J5 X                    other.color=parent.color/ |) _$ H1 \& F3 s, n) A
                        parent.color=BLACK
    1 ]- V0 l% B( }0 n                    if other.right is not None:8 l" S$ B5 u+ r( r2 ]1 c
                            other.right.color=BLACK2 g( [" u" u: c/ h( R6 P* e0 t
                        self.rb_rotate_left(parent)0 ]" v) b9 }& n  Q* A3 h
                        node=self.root
    $ K+ b5 U" Z, i. v# s6 |3 }                    break
    7 B  N* g- n- u# y) P- P7 L            else:
    8 z4 {% E( l  l& B& _! O# z* O                other=parent.left
    . A3 z( h6 S4 c$ o+ o" T" A2 f                if other.color==RED:
    ( k. D  `+ Q! \  E* }                    other.color=BLACK8 W4 h( [+ w. b* {( b0 H
                        parent.color=RED
    , p) M2 k3 o' S) z+ a                    self.rb_rotate_right(parent)
    2 G* I- H& n9 S, s0 B; k) I$ v                    other=parent.left9 ]4 l7 @6 M" g( n9 @  u: o5 g
                    if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color==BLACK):1 V  }: R6 l5 [, F( i9 z6 R
                        other.color=RED
    4 D% r# p; G6 k9 F4 R( E                    node=parent
    ( }! Q9 M) |/ j% x* G, P; B4 u  w                    parent=node.parent# b$ C  ?5 b) s6 B! v
                    else:) c9 q4 a# R- b
                        if other.left is None or other.left.color==BLACK:2 [% O7 b+ M% D& s6 ~6 w. L
                            if other.right is not None:5 _$ Y+ Z' n3 g; k" D1 }
                                other.right.color=BLACK5 ]$ X- z+ f8 i$ b& i6 Z
    ( e* D2 J* [5 f$ g2 O
                            other.color=RED
    % x. @; I' g2 ^: Q: v( A                        self.rb_rotate_left(other)
    / v3 D) P* b* d" j( v& \                        other=parent.left7 A/ S/ O0 L/ h# g. W( r

    . l- S7 _# Q  b, a9 O5 j. D6 k1 q* x                    other.color=parent.color
    : i/ M$ u6 K+ x- I, q, d% F( U                    parent.color=BLACK
    & n5 H) L: k$ W
    $ V: Q* J4 ]* ?4 O& ~                    if other.left is not None:
    " Y7 [8 H! y* D6 g# r1 }& a$ ^3 x0 Q                        other.left.color=BLACK
    : y; x% r1 l1 h
    & R2 U' m2 k: r. z                    self.rb_rotate_right(parent)8 j4 M( J: F& {3 v1 s
                        node=self.root& f8 [, D4 l( }( [+ s
                        break
    ) @2 f# P' ]" i+ g; F& [
    % ]# n, o9 g- I1 z5 v: S9 K; T
    - S* o  N' K$ E1 d0 f+ m. X
    ) M, b1 f1 k$ H& b        if node is not None:6 s: i" m( N2 B2 ?( F9 R: P5 j3 Y7 c: d
                node.color=BLACK    # u# ?8 C5 s  k" n7 \. C

      A2 c3 G- B2 g; n; V1 B    def rb_erase(self,data):3 ]% l: u" [! j0 x/ E
            tmp_node=Node(data). R6 o2 K1 s; I+ r  j
            node,parent = self.rb_search_auxiliary(tmp_node)7 |! k" Z) N$ q8 |  _4 ^0 P
            if node is None:
    8 I% a$ B6 v, o2 A8 \            print "data is not exist."
      u; @  l9 e' U- I) E/ j9 ^+ a" w            return
    # q$ u) w$ O7 J$ l7 D; F        
    * V; b. ], j! F, _        old =node
    % S* |. F8 L0 ~5 n" ]6 d2 p        if node.left and node.right:
    ' M* g7 |- r& @3 Q            node=node.right. O8 |9 W+ J' N" r5 W

    ) _  h2 S; K4 m3 n6 w            left=node.left
    * D2 x1 G. {# S7 E. R1 \8 L            while left is not None:, A7 X: Y- j; v3 T$ c: {
                    node =left
    * G  s5 ~$ i* O5 o/ o( i) }                left=node.left
    5 ~: y( a$ i9 X, C
    % I* H, v5 q, o' q6 V) v! ^            child=node.right
    - J% p$ B) |$ p% W% a7 p- h; e- e            parent=node.parent0 \: B2 v( |5 J9 m$ N6 c0 k% K
                color=node.color* ~" ^4 z3 \/ j* G7 i$ g$ Y
    * h: I. W( V, j$ D) f  B2 t
                if child:6 N5 O8 ~# |$ S7 d+ _
                    child.parent=parent2 z1 l$ e, }) \8 N; g/ r( d, O
                if parent:
    * w# h8 V; Q. N  c( @  r* }& x                if parent.left==node:! m$ e& r* A' r. a  E$ X
                        parent.left=child
    1 V( K8 I, K* X; X$ s7 w                else:
    0 Q8 C! u9 P/ j$ k                    parent.right=child  ?7 Q$ d$ n2 s# I/ I
    $ j- L0 \2 j' Q& @: o6 m
                else:
    + e( S' }# ~3 Y9 J                self.root=child. q# C; q9 X. Y6 l6 M

    ' V/ Q9 d3 R; Z0 H* |4 X$ Z) e: k            if node.parent==old:" \: L' N* c; U
                    parent=node
    ! m, S  K7 ]9 f8 l0 q# G  Z; ^            node.parent=old.parent
    % |8 ^, x3 L/ {1 N" Z) e0 C* B            node.color=old.color( w$ r) e% A0 q
                node.right=old.right
    ( H; Z, l+ W2 m" y+ p) @9 P- y            node.left=old.left$ A4 t, D( F: y; ^; x( o- u& d1 Z

    * d+ v2 T- X2 }2 Y  |3 b1 q& r            if old.parent:; D8 x' O, v0 z* R6 i7 C5 r
                    if old.parent.left==old:
    - z' O% G% ?6 X; C) K8 |                     old.parent.left=node+ l0 ]% e0 v; J8 Q8 @5 L
                    else:6 e$ B" [0 z% i
                         old.parent.right=node& \8 u& e$ L; B8 y& {
                else:. A) ]3 h. y1 }: J. F9 b+ n
                    self.root=node
    $ k. }" L5 o, P& v1 r/ s- t
    8 T9 k7 j5 y( f" X. K0 L* u            old.left.parent=node
    : d- K5 Q$ E% s            if old.right:0 Y; g9 {2 X! x  O5 G* F
                    old.right.parent=node" T: Y2 F) Y4 `& S! G
    ; [" w9 Q5 l' H+ o' e
            else:
    " T% i% F) V- T" J( _            if node.left is None:) t& E5 q+ H8 O6 ?
                    child =node.right7 H) `3 G0 y5 x$ z; X0 u
                else:
    1 r9 h0 {6 d" Y5 L" V; d) s1 L                if node.left is not None:
    6 w: e; K- g8 Y2 T" d                    child=node.left9 ]1 t+ e6 W/ o0 y9 Y$ L1 g
                    else:
    8 n9 Z, d7 ]; X5 f9 L& o                    child=None
    " y* ]3 l# e( r8 v            parent=node.parent4 C: ]8 Q/ B7 v; w, N
                color=node.color
    * `3 v5 l3 I/ i/ O  h/ [8 r            if child:
    0 j/ t1 _0 E( c                child.parent=parent
    6 T! ^2 E& R2 K            if parent:
    0 k4 S8 f  w( m, A                if parent.left==node:
    2 J; o/ V( b) \# }- z3 A1 S                    parent.left=child
    " `+ X% r7 K% ~/ J                else:* Y- Q- a: K9 [. a
                        parent.right=child4 h  p& B0 I; Q3 {4 w; p
                else:& u2 S: {# _/ @, k$ {) `
                    self.root=child) \. |$ X! i" r+ d% s4 D) A8 H
    , a6 ~" x3 y$ }% ~" ~; B2 v
            if color==BLACK:
    # |- e8 z4 ~% a& w2 q$ c8 l$ l5 N% Q+ i$ n5 ?
                self.rb_erase_rebalance(child,parent)
    4 n7 \7 e; X* D+ \/ l/ B6 @4 G2 i& N- M
    % F& A3 F% S. N$ @' y1 {8 J$ |
        def rb_travelse(self,node):7 l/ F7 W% S; e( _& |8 I
             if node is not None:
    : Q  w! V, \% J* M/ _8 p1 B- ]             print str(node.data)+'\t'+str(node.color)$ ^( \6 h+ W5 ^8 p# i
                 self.rb_travelse(node.left)$ f9 K; m2 ]1 I: \% |) k. E& n5 w7 T
                 if node.parent:
    6 j2 ^' m8 y! g, i                 if node.parent.color==0 and node.color==0:3 V" |+ L* p. |  X& J
                         print "error"0 ~1 v2 j& g; l( P
                         return) A0 k7 W" {& O' ?% F) K' ^
                 self.rb_travelse(node.right)
    5 T* \$ _) B: \, }  q& u9 I5 M             if node.parent:2 k% L2 p8 I: n, i4 S4 Y1 Z
                     if node.parent.color==0 and node.color==0:* a0 S+ }3 \4 }
                         print "error"
    ) A9 ?% ]6 l  `+ F1 t0 l; |4 B                     return) i/ ]5 V+ t9 B) H; P! ?, |, l8 @6 S
      V/ O, R) T' N3 @1 \  S$ R
             return
    / A' h0 S$ W5 W( Q% w                  V: R2 C+ _9 ]. p: v+ F
         
    4 s' X1 U1 i5 m" a    def cmp(self,node1,node2):
    , @, B6 l! K# C3 v+ G# H        if node1.data>node2.data :6 \; l! y/ d! ~
                return 1
    6 a* s& K  |) K; h* ]7 V" \        if node1.data==node2.data :  D! I4 u1 d3 R7 ~: X
                return 02 g" J4 X0 [  j7 d8 P. Z8 y5 y
            if node1.data<node2.data:
    0 t, m1 @& r# u            return -1
    ( {7 W4 K7 U( r- f- v' `. K' ~6 r2 v
    if __name__=="__main__":" m' w* J, v; n
        print "main"
    / E) X: i7 V6 H2 e    data=[28,6,39,78,6,43,61,56,71,38]5 W5 b6 [  _" S$ S$ H. t, r5 F
        #for i in range(10):  E1 p, Q$ x- a1 w; N7 Z1 f
        #    rand_num = random.randint(0, 100); l1 i0 S. g0 D  z
        #    data.append(rand_num)
    5 }8 X1 M- \/ b+ g  U    #print data
    / ]1 j# y1 d( E# p8 T7 z: O    t=RBtree()
    - B* l) R6 i# @  d9 }" R: l) F
      W9 j( p8 t# @% T
    1 _9 b. A0 E5 z. x. D& u3 ~6 V    for i in range(10):' W% D$ t8 B, X" S# ^
            t.rb_insert(data[i])1 C0 h& V  V" _7 r) l
    5 q1 c5 C$ I- ~7 S$ b% U
      o, W% E1 V1 l7 n
        t.rb_travelse(t.root)
    % ], e4 j: c; f* Q2 e
    5 c; x( A" I' z( ]& s/ h    print "---------------------------------"
    6 i- L: E* _5 w# [, A    t.rb_erase(data[7])
    $ C0 J* g  |& ]1 {1 m        
    8 T) M( \, D9 {% \+ J9 K    t.rb_travelse(t.root)
    9 A4 L- H, m% Z6 B- B8 J! N
    & \9 w5 A0 v2 Z" k
    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-19 09:10 , Processed in 0.488066 second(s), 79 queries .

    回顶部