QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8430|回复: 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 python2 t. ^% e1 C6 p0 R" c9 q+ d- j  O
    # -*- coding : utf-8 -*-
    9 G2 S+ B9 z+ V4 D. Q  x$ v
    . \8 |+ f# w0 D# W8 U% w9 ~import os9 c3 c0 ~/ u1 A7 w9 h, q
    import random
    . n0 |, Z( l$ a
    , e9 ?5 R- K- j& M- a: LRED = 0+ c* i2 S) }: d3 e
    BLACK = 1: l! w. ?; Z. t: E3 u
    8 J$ N) H( A6 H& B6 d. v' C! x9 ^$ E
    class Vector(object):' r7 P, l; I1 T
        def __init__(self,x=None,y=None):  X: y8 o3 M% p
            self.x=x" l$ O% I7 Z$ X+ O0 z
            self.y=y
    5 ^1 g% e+ F8 P, K- q. Q+ r. N4 L7 p1 a0 m5 e% \3 t( g
    class Node(object):. z/ n+ }* ?7 Y' [3 {
            """docstring for Node"""! D8 N. {( d: l5 S' r' ~* U
            def __init__(self,data=None,color=RED,left=None,right=None,parent=None):9 T% W7 g8 l* u  C+ q
                self.data = data
    3 U* p2 L: }, l8 C3 P( F            self.color = color  k! F# d0 A! x5 [7 Q7 b+ V1 f
                self.left = left
    8 J' b  R* ]) b0 l: O8 n            self.right = right
    1 e9 T  h" w- N            self.parent = parent
    / Y5 k" x  z. P3 A% A) l+ {
    ( F1 B. W1 \4 ?: _  Q! d' mclass RBtree(object):, T! B; D8 ]- }1 h- N2 k/ @( H+ ?! L
        def __init__(self):4 ^2 _9 K! F1 [8 z" [
            self.root=None. c) T6 t7 V5 @; |- f: Q1 ]) l
            self.size=01 c8 T( {% x8 a" V% E% k3 s

    0 K1 |& ^' B2 L) \  J8 b+ p6 m    def rb_rotate_left(self,node):' ^* ^& }( z' H6 i4 }+ |( y
            right=node.right
    . d% m% \5 e$ ?0 t, Q$ m! p1 N) ~
    + E' h. G- t# Q! j        node.right=right.left% L$ J6 R- d8 x2 d% E  B" D# g; l& Z0 j0 Y
            if node.right is not None:
    ! l6 k- x, C) A. {  x4 H; j            right.left.parent=node+ p! e) Y# X1 p; U! C6 j
    + N6 W) S8 T# W+ p) L
            right.left=node
    - ], a, I# F' s: f  `4 \        right.parent=node.parent
    9 B, L( [% Z: e5 m( A; L$ R9 a5 r, \) p2 N3 O
            if right.parent is None:
    3 s( }, S1 y: l0 G  `               7 z1 p4 w/ t9 ]7 i" i
                self.root=right/ R4 Y$ F7 n$ a& q
            else:: o6 i* W& N7 }* |0 t% j
                if node==node.parent.right:: w! a8 f" G2 K' Z: v
                       node.parent.right=right& A/ `! U" k+ P" s/ V' ?
                else:8 ^& w* T, F  i8 W" Q/ j& o0 J
                       node.parent.left=right
    1 }7 P! L2 P. g  A# I        node.parent =right& f* U5 l0 Z7 z( {  o5 W. g

    : s! i; d5 H% _0 E# L5 @
    $ Q. n3 j; u6 W5 M( P4 [5 Q    def rb_rotate_right(self,node):- H4 g8 e8 e- {6 y% m5 Y
            left=node.left$ H0 ?0 y6 V: n- E% Z+ x; }
            node.left=left.right
    2 f+ ~: b0 D: e1 ~9 P& s# n3 L+ L6 @1 C: w
            if node.left is not None:
    : `- Z$ s2 L. X+ f            left.right.parent=node% s7 D3 A  H* ?1 N4 c
    : m: f2 J3 _" v4 T" U
            left.right=node
    6 R. d5 o  K/ B- A1 I- ]8 V        left.parent=node.parent
    % `$ q0 @' m! C2 e3 Z6 h0 k. V( F; v- z# [
            if left.parent is None:9 o# b/ R/ q. c" n% U
                self.root=left, t/ E* Y  j$ z* J
            else:# O7 X8 j/ d, q. h) z  l
                if node==node.parent.right:
    2 U8 ~& m* D2 ]6 I                node.parent.right=left2 n$ P# ?3 J/ U9 @+ e: ?
                else:  L( H* h* Q$ K! x2 M, ]( _3 @
                    node.parent.left=left" I% \& x& }2 X' K  f" R
            node.parent=left6 N: e, K' S7 z- ~
    & P* z/ v( s4 f1 m
        def rb_insert_rebalance(self,node):
    # L& A; a8 Y' e' q" r        parent=node.parent
    7 Q: b% y* N  g% S$ y- _        while parent and parent.color==RED:
    " K4 w1 G6 [1 p! m) s4 v            gparent = parent.parent2 I) i$ @$ a, ^. H' L
                if parent==gparent.left:
    7 Z; u7 _2 u1 G/ [) F                uncle=gparent.right
    & L3 F2 d$ `( H* A  A                if uncle and uncle.color==RED:
    , i) r. H, }6 E! W. L( ~                    uncle.color=BLACK
    . M& P" `. q# T0 N                    parent.color=BLACK
    % Z: ]% s9 y4 K. d$ O7 O: }- b                    gparent.color=RED
    ( \9 |6 x1 N4 d6 l4 @1 ]8 d                    node=gparent
    0 p/ n4 Z! I! }5 m0 K1 t                else:4 S" `- u$ j4 L+ d" H/ J
                        if parent.right==node:+ R* w6 m, d( h7 x2 R# k& b
                            self.rb_rotate_left(parent)
    $ Q: n* O8 z; r3 r4 e; t# ^2 a7 V                        tmp=parent
    2 s$ [8 L7 Z& d% J- ?' u8 ]                        parent=node
    7 ?8 t5 K7 R+ N! |                        node=tmp
    ( S) ]3 B. S3 g& M* r. v                    parent.color=BLACK
    ! M& F" S1 \3 p; r                    gparent.color=RED- H8 m# j+ P* J( S
    * f! D: I6 Q5 l! K% ?: w4 _
                        self.rb_rotate_right(gparent)1 ]3 f' s( K* R

    ; q, G) y7 {: I2 y' a                    if uncle:% T- T& E" E: E9 b2 y9 |/ l
                            if uncle.right:. c4 {  P: R  ~8 A
                                node=uncle.right; ?' C8 ?. \5 S" l# }9 v: P
                else:
    9 Q- k$ E! J" ?                uncle=gparent.left
    4 y" V2 ]2 Z6 l: r                if uncle and uncle.color==RED:
    $ ~- ?& G5 ^: y! R% |                    uncle.color=BLACK
      O' z6 n( o/ V$ K2 O. ?% I/ ^                    parent.color=BLACK2 `/ o2 l, ^  O! ^1 N
                        gparent.color=RED
    1 g: E) `& k' F- k7 d                    node=gparent# \9 h8 y& K, j* I
                    else:
    2 A3 O9 P* o3 w, z6 b                    if parent.left==node:8 T3 q" t/ F' M: v
                            self.rb_rotate_right(parent)# S& t2 z: o7 |. O  H' \
                            tmp=parent8 k) K9 O3 R, l  ?8 ?
                            parent=node
    0 b7 c7 Y( N! D% ]                        node=tmp
      T4 g1 t: C3 c* M7 L: \                    parent.color=BLACK
    * }/ A6 q* E  ^                    gparent.color=RED
    3 B' k9 a# m2 H6 G7 R$ t1 t                    self.rb_rotate_left(gparent)
    ) w' ?+ q* Y3 O3 C9 y! c7 h2 Q) J7 V5 Z3 @/ @) r! k; p7 ]) {8 z9 c( t
                        if uncle:
    - i4 s( |2 h! d" l                        if uncle.left:
    $ m3 I/ y# r4 d0 C5 `                            node=uncle.left
    7 I8 V" h0 g$ C            parent=node.parent) v' W6 x- s1 a1 w" B; M- s

    6 e4 U8 ~  t& A8 ]+ N( `3 ?$ `3 j" j; g% f7 `" U# [4 U( b
            self.root.color=BLACK
    ! k! I9 p/ ]9 c0 D6 k5 o* s        7 [. s5 L- u1 t- K' I5 }& Q
       
    % E% H. T% l8 N    def rb_search_auxiliary(self,node):* G" v) C6 e: _, }5 N
            tmp=self.root% ?" k$ n  z3 J4 d
            parent=None  q& r* [# h: e2 U% [
            while tmp is not None:& H/ r8 T$ b6 h' Z; D1 a' q
                parent=tmp
    8 _5 M  T6 ?8 @3 R8 C; O' E7 T            cmp=self.cmp(node,tmp)3 }3 c% r) F6 a4 C6 ]: |- |
                if cmp<0:
    ( c6 g0 K5 D6 b" F% j                tmp=tmp.left8 ^5 ]4 E$ g: ]6 f
                else:
    - J; J( r# J! ]& F, }                if cmp>0:) Q5 X% R, X) }; w) u7 |! C
                        tmp=tmp.right
    : b) h. f. @- t+ Z6 I8 [, [0 C' G, }                else:
    8 B$ _2 |6 w9 J' }. U                    return tmp,parent
    3 G; J) n6 b3 l( y
    # B) t4 ?4 V7 U! z& Q3 ^2 S        return None,parent
    6 B# d& X2 T. Y2 Y2 ~2 ]8 D* }" Z+ E4 k, `- [' F+ G: h, M
        def rb_insert(self,data):  f; U# b' }, T" x% [0 e
            tmp=None" U- R: u8 L" B
            node=Node(data)9 y$ l& `9 R' O. z3 E/ d0 O+ t* W
            tmp,parent=self.rb_search_auxiliary(node); E. f( t% N0 S. C1 w4 h% c& a

    7 v' F+ d- t: E( c        if tmp is not None:+ F" Y% B1 T3 U- n
                return + H% k$ N1 ?' X* Q1 [9 z

    2 z$ P$ Z# @4 i! y  F$ J9 g0 d        node.parent =parent
    + D. o2 I* Y9 Q0 m        node.left=node.right=None4 K0 x2 M8 o/ w( u' I  V
            node.color=RED
    2 m* }0 m. o4 l$ U- f6 r7 Q7 f1 o- @: P: U
            if parent is not None:
    0 g; B8 a4 w" s! k* ?) P& x+ `5 c) ?
                if self.cmp(parent,node)>0:
    & R( j* K$ c- |' K                parent.left=node
    " P! R4 V7 J; k. f            else:
      v: Q8 y7 b6 b& Q' a, \; I; }0 F9 @                parent.right=node
    1 `+ M) J1 Z+ T! v, ]1 h        else:
    1 Q) j% ?, `5 M5 Q            self.root=node+ l% I+ s/ R4 s- H# ]' i+ d
            return self.rb_insert_rebalance(node)
    5 Q( x* H8 \7 o$ L+ v
    9 g+ x% _0 x& g# l) ]    def rb_erase_rebalance(self,node,parent):- k, p- u! W1 ^8 k: `
            while((node is None or node.color==BLACK)and node !=self.root):3 `* A" s, c; G7 h) p
                if parent.left==node:% t8 Q9 B2 J% r& c$ |/ d4 i! L* n3 O
                    other=parent.right1 b, v9 m# t5 U0 L8 c  k6 l$ h+ j
                    if other.color==RED:
    + x$ F* w5 i& h9 [; U" y/ _0 x                    other.color=BALCK
    # x* D' w6 D5 y8 v' ]1 `/ k& m                    parent.color=RED& F" \) b) _& H' _* I) W
                        self.rb_rotate_left(parent)
    & @' X7 T# u7 H8 o                    other=parent.right7 U1 l! R) [- |2 X8 n( ]& u/ ?
                    if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color ==BLACK):5 [) ?. ^  z/ P& G
                        other.color=RED: D5 j# I1 j: R- v
                        node=parent
    - }$ `# o, H. M' x                    parent=node.parent
    ( m4 n' A/ ?0 A                else:
    0 D; o; D$ c% ~  j$ d1 X                    if other.right is None or other.right.color==BLACK:
    0 i/ _( f- L4 F- R( D; _: {: A5 u/ p" s' Y  ]
                            if other.left is not None:' _8 d3 E& c4 t9 D1 w% y$ Y
                                other.left.color=BLACK! J/ A' y/ q1 R
                            other.color=RED4 E0 ~7 M5 Z* W: U
                            self.rb_rotate_right(other)7 d6 B  V" f6 @( L6 y* P
                            other=parent.right8 X# G2 y; I* f+ w/ n3 I9 c9 B; J

    * L+ M: g) h/ I+ b3 a                    other.color=parent.color
      J$ N4 _4 U) {! K/ F                    parent.color=BLACK
    ; E+ h8 t( V. V& E( }7 j" u                    if other.right is not None:
    * _3 _% w! w5 @+ n- A                        other.right.color=BLACK
    9 b; S- d# g- ~; _3 w) b                    self.rb_rotate_left(parent)' L5 V. W" H3 k
                        node=self.root
    1 i. ^8 l% H  k: s7 x( v                    break* n9 ~* ~- d1 D& F
                else:  n# q5 H. [; j$ e
                    other=parent.left
    ( s+ I6 o. g  p' o$ |                if other.color==RED:% a7 @- ]/ D9 R( J4 D. d
                        other.color=BLACK& [  `- ]7 \8 m$ S( m# B
                        parent.color=RED; z. X# v0 |' t0 B- o
                        self.rb_rotate_right(parent)
    2 `' r8 v1 B! B( e; X  r. M  z                    other=parent.left
    , o  k+ q% \: \5 c0 `& f% G                if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color==BLACK):
    8 R* o: [8 H+ P' M2 i7 ^                    other.color=RED, S: U$ g4 q# q3 q7 j
                        node=parent9 H0 t+ j* p1 Z; d
                        parent=node.parent
    6 Z2 e; I% _3 E                else:8 X! r7 y- c7 @" T0 ]
                        if other.left is None or other.left.color==BLACK:
    , _* S2 t7 @5 ]7 ~3 R                        if other.right is not None:
    ; b: l: v! ~6 E+ C( ^7 v/ s                            other.right.color=BLACK' G0 n6 f) U" X/ Q; m3 d* z
    2 y0 z! G9 h: n& w+ N
                            other.color=RED" Q( F/ W8 ~1 N
                            self.rb_rotate_left(other)/ D$ }2 j2 L! A4 g4 J/ i1 h
                            other=parent.left
    - P9 i! b) v3 V5 X2 I
    ; @, |4 t8 Z. Z- D" u) Q                    other.color=parent.color3 T$ l5 o5 L3 h6 ~+ d( J! ]1 Z
                        parent.color=BLACK/ A5 F" R4 d; d2 v3 l
    0 @3 _) z$ F$ b0 G: K/ [! u
                        if other.left is not None:
    ) R3 K) Z( Q7 V  o                        other.left.color=BLACK
    0 M0 \' m  K6 R
    1 x  N% A# Y1 R. s6 l5 M) v                    self.rb_rotate_right(parent)
      p' T, L- G; J5 u6 e                    node=self.root
    0 ~1 W( k: ^5 y! }. ~1 ~4 E                    break
    , X; y1 o) \$ |
    ; i& U9 A+ m/ X) t0 L
    4 E8 D6 D' K8 l; }
    3 {- z" t6 [! Z  e  S        if node is not None:
    5 U  ]* T: \% H4 K  o7 c/ d            node.color=BLACK   
    . y& @, B% b  g) \0 g' g$ o4 s! D# d" ~2 m( A1 m3 J! r& m( w
        def rb_erase(self,data):1 y* C1 N) \4 }
            tmp_node=Node(data)
    ; b  \. V& {0 e' [; h        node,parent = self.rb_search_auxiliary(tmp_node)8 b. l( e/ m9 Q6 D! S
            if node is None:
    ) D( x4 U9 g8 ^7 _            print "data is not exist.". R6 G1 z! \& q6 _, R
                return
    7 ?: G8 i/ h5 U  Z8 {9 {        
    7 a2 _, @+ g) ?% Y' e3 d        old =node. Y( |' \) R' E! \; D$ k$ w% {0 F4 k+ R
            if node.left and node.right:% X% j) b" `7 v. t* v
                node=node.right5 X# w4 J( X  w; o8 I- d2 L5 ~
    5 o. Z, b: E* i% Y
                left=node.left$ S0 A9 R# D! A6 x$ k/ x* a( \
                while left is not None:9 ^( Z2 R7 f8 o8 V: K4 W1 \
                    node =left
    4 b, `* M8 U! X% `0 E                left=node.left
    ) y2 u! J$ p4 ~5 k) ]
    # D4 e- q+ q/ K7 |            child=node.right7 X7 C4 F* x) C3 p8 t
                parent=node.parent. n6 @- W8 E" q+ C' N# f+ l
                color=node.color. W: m% J$ U  ~1 ^# T4 `* A# d

    2 Z' N& z" F+ \! \7 Y! K            if child:
    * n6 m. A. n3 x! p                child.parent=parent3 g4 c7 T5 I& P+ E
                if parent:
    / K1 N% m; C& j# B4 \, ^8 A3 `1 u                if parent.left==node:( Z  `# y+ P: w) R
                        parent.left=child
    ( v7 x& O  B# j( i4 f                else:! {0 f2 U8 N9 V/ \6 C" B
                        parent.right=child4 H- S4 p) p' I

    " N; z8 f2 I' d: r+ x5 x1 x            else:
    . L  A6 V* C. a- G7 y" d                self.root=child3 T1 L4 x/ c6 D7 H- r5 t6 W
    ' I2 y6 y7 e/ ^
                if node.parent==old:: G; Z% a$ O; @% v' Z5 Y) I+ m
                    parent=node9 E% ^. E& R5 {9 d1 u5 K
                node.parent=old.parent
    9 H2 N" d/ s; l* w6 R) Y. @7 X            node.color=old.color3 w' G/ `& v; a) c
                node.right=old.right
    0 Y6 n, \% t+ D+ h1 d% n            node.left=old.left
    + `0 W, g- R( d: s8 g" j+ {
    8 j! Y6 t% {7 n9 S% z, ~$ [            if old.parent:( H% A9 y9 S# a( Y& G( b9 j, B
                    if old.parent.left==old:
    ! `8 V5 C0 s& k# ^4 ], d                     old.parent.left=node
    ' `" S, ]1 n. q2 n. [( k  ?                else:4 k' m# w0 k  O8 q! N* o
                         old.parent.right=node
    1 w5 A) c; F: x! ~7 h            else:0 u% F: |" a" g; @/ R3 B
                    self.root=node$ @: O% s9 Z0 c$ E5 u
    ; h+ t% `3 r5 Q8 H6 v# A# `: O
                old.left.parent=node9 V" V0 `8 S2 H1 v/ W& G  U
                if old.right:! B9 x8 Q2 ?- D6 e* o
                    old.right.parent=node! J' Q  m; [8 }; L
    4 E* I9 c6 V3 Z. r
            else:, j) @2 \" U( K  X4 [0 x2 _
                if node.left is None:/ L0 q; N1 \0 a
                    child =node.right* j5 m+ _: L1 [# e# E, V
                else:6 H5 q- c' B; x7 z  U
                    if node.left is not None:, w) c$ b/ A! M
                        child=node.left, E4 ]0 i0 e6 A3 \, ]4 I
                    else:, O$ F2 h4 l/ _' u5 r1 d6 z1 ^
                        child=None% u0 q9 F# h7 r. C
                parent=node.parent+ x! D" i% j3 r$ E
                color=node.color
    , i) ?1 w8 R+ S1 ^  A6 w            if child:
    8 A3 g; Z# `' d                child.parent=parent- q7 g: h( A+ {8 S' e4 \9 h
                if parent:5 h% v) N) m2 F0 G- h& r
                    if parent.left==node:
    ! w- |+ [* w8 d& I5 [                    parent.left=child
    . J3 }/ j) A; k2 v7 z                else:  o( e4 }  z' ^* s( G9 A# o
                        parent.right=child5 u3 s9 [* a5 b9 b
                else:
    * h! h1 y7 L7 I9 E                self.root=child, w2 f! A" T5 I

    7 a) N: O8 h3 x        if color==BLACK:
    4 E' W1 ^+ X0 M1 H
    , d" |# \! C& Q  k9 b+ a            self.rb_erase_rebalance(child,parent)8 V, g) R8 G$ B" A2 D# a# G2 c
    5 V7 M: r, {3 O; F, J6 T+ b8 [. q

    " U! J1 U2 f6 g/ P, |  W8 n7 A    def rb_travelse(self,node):/ B  }9 ?' R& I' a& Z$ A- Q, J
             if node is not None:& G% O4 Z. `, |3 P; {
                 print str(node.data)+'\t'+str(node.color)
    - y. z& K2 ^7 e2 t5 _, H* M4 W# [             self.rb_travelse(node.left)
      b3 X! a* O" }% U" K6 B5 g7 C             if node.parent:9 p) O+ b3 O5 w; G( \
                     if node.parent.color==0 and node.color==0:6 X  h# f  p# V* v. b
                         print "error"
    8 {4 i$ z4 j# y: A                     return8 j4 j$ k2 c2 S$ M' s$ k* H
                 self.rb_travelse(node.right)
    $ M5 L2 t$ H% O             if node.parent:
    0 R. n( A, a. j! D+ X* J' S" f* m& C                 if node.parent.color==0 and node.color==0:
    % }8 I8 \# s1 l                     print "error"
    & w8 N3 d1 r8 |* j                     return
    ( b4 u/ }. x$ k$ }6 t& d
    * k, {5 I, S) p& C         return6 {- H' H. M6 o* ^4 V
                    1 l( E$ L! ~. q9 B, y
         
    8 K* v9 x8 l. ^+ Z    def cmp(self,node1,node2):
    , P: }: W5 }7 M% I( e9 b: |7 }) |        if node1.data>node2.data :
    9 E; b. f( u6 w) Y            return 1: }3 ~( G  K0 H/ x7 j; R5 a
            if node1.data==node2.data :
    ) e2 i% d- J% p            return 0$ q2 K' J4 P$ D! ~! y/ {
            if node1.data<node2.data:
    1 U% U+ V, d6 V9 E- e$ q# U            return -1
    5 Q4 E4 S! V/ K8 m7 B3 u
    : b4 R5 I; g4 `! c% b. D5 mif __name__=="__main__":
    * U. G% M$ p1 R5 E2 D, A% Q    print "main"
    ' X$ g& `: j0 m8 a1 ]' F4 _* q    data=[28,6,39,78,6,43,61,56,71,38]" U' k: v4 t, x' Z% q$ R0 |/ v
        #for i in range(10):
    & V) Q' v) f; r    #    rand_num = random.randint(0, 100)
    - c1 o6 c- g3 {4 J& \    #    data.append(rand_num)
    3 t! _% N! ]' f( o+ T    #print data$ U, Z! v+ M# K* _2 V
        t=RBtree(): d5 ]7 O& V9 B# ^  D3 ~

    + M% Q1 g; t: y* h1 C$ s
    4 C7 M  ?  G! q! e+ G# ^    for i in range(10):; w% `' T6 L6 R: M
            t.rb_insert(data[i])! S. n; ^% x) o, \+ C

    ; D5 a1 H6 X9 l' F* r3 U9 r& P" S& E- K& r
        t.rb_travelse(t.root)" F, q% d( c$ G5 q& C
    : A9 }# }% @. l- _- _
        print "---------------------------------"2 \+ p- f. l; [( q! w
        t.rb_erase(data[7])
    # V, B- i9 i3 H: F, ]8 n; \        3 K9 {0 {3 r& i- V. o$ e
        t.rb_travelse(t.root)
    7 c: R7 h6 d% M# l0 j' _0 Q9 s/ q; r- h% P& q8 A4 Y
    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:42 , Processed in 0.696172 second(s), 77 queries .

    回顶部