QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8535|回复: 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
    1 i& l2 \2 @- }" s$ ~# -*- coding : utf-8 -*-
    , ~8 I: a9 r2 k9 R! N4 Q. ^' ]% y) ~, h
    import os+ k& v0 ?; W" Y
    import random* K; B, G) x+ s6 F

    3 r5 L- D4 K' v4 l$ N1 ~- K4 a  BRED = 0. @1 G* d0 L" E
    BLACK = 12 h. ^* m- x6 U2 ?

    8 {# C$ Y5 X. w& e  @class Vector(object):
    ( T1 |2 r) x  N, F& n    def __init__(self,x=None,y=None):4 s5 i: Y5 i  I; a1 w* m2 n
            self.x=x3 I& y# f! Y' C6 Y. L% A; D) H
            self.y=y7 r) g" s/ g) I# x# k
    8 c3 d- c8 |2 {: w) l" T$ b6 Q" F  Q' E
    class Node(object):
    $ C1 y0 `2 a: g0 P4 e        """docstring for Node"""
    1 J+ I$ z' s* l" Q) Q        def __init__(self,data=None,color=RED,left=None,right=None,parent=None):
    6 P$ G7 Z2 V% K            self.data = data; L) O% _% d' t' z4 o8 b+ H
                self.color = color8 ~$ Q3 V& K0 |4 j7 U+ a+ B
                self.left = left
    * ?& S/ ^: e8 `6 l7 I            self.right = right" U; [; J( F6 @. ]4 H5 g( v7 u: x
                self.parent = parent
    2 N0 u- k, w  k' M, V) e' W" v8 h3 ^! m( E8 r/ u; b) V
    class RBtree(object):$ E6 V6 R; F) |8 E+ Q) e
        def __init__(self):/ h1 d+ T2 T) G+ M
            self.root=None
    ) ^5 t( y. L/ o" B4 @: P        self.size=02 i: Z1 s2 D" R1 J* P; g7 I; l

    3 }2 |8 t7 f; v6 O( ~1 o! f" l4 _3 h    def rb_rotate_left(self,node):$ Q+ t- K5 i7 q% D: D0 @
            right=node.right
    ' |; g5 N" d' w5 \* N: j
    ( ^4 w  M  T* V  p        node.right=right.left% S7 `5 H) J  F; ^8 e
            if node.right is not None:
    9 C$ w$ l8 Y# ]$ B( e; q            right.left.parent=node
    : f" a" C7 H7 @6 N+ N# Y; o0 g2 }1 o; L+ a$ y+ ~
            right.left=node+ `% c0 t1 x7 P
            right.parent=node.parent
    5 V4 X5 F/ G) u2 g7 @
    ( K( x3 M0 F& t        if right.parent is None:$ z. {( Z; V2 Z: S; F
                   & c& e3 T+ e. E7 b
                self.root=right
    6 w7 f7 K, [+ I' m        else:3 t9 l/ G3 u. U5 U) X
                if node==node.parent.right:
    $ i. q8 I; K5 b6 o7 E: y* Q                   node.parent.right=right
    + B9 z+ D2 e. s            else:
    ( H  i/ S; D1 F9 k                   node.parent.left=right
    * S7 G4 t( D; f, V, a        node.parent =right
    9 ?3 l  m7 W" C; m0 O) E" K" o- u/ I5 ^; e
    ; x5 ~% X9 S1 b# a
        def rb_rotate_right(self,node):
    ) M5 h& s8 T' L6 ?  }3 A2 j        left=node.left' e; q. ^, N3 u, g! G
            node.left=left.right
    * W. b, k: v! q9 V  W! \; [! c! Y, L! @( N
            if node.left is not None:
    # G7 h- _: ?" P$ g9 r: D            left.right.parent=node
    ; f- x5 T9 h* U  E$ _" C$ h
    & w! b. `+ e2 ?: n  o3 d" ]7 Y; Q        left.right=node
    5 E; r' K: u, P, W* U* B        left.parent=node.parent. k, w3 n% C8 T: L
    , ?& G5 w2 S/ z* R1 M
            if left.parent is None:; u0 [9 P& E' b. [0 d
                self.root=left
    1 J! |$ k* v, X4 l) ^        else:
    8 ]$ |' A6 P) L0 X4 N) Q. C            if node==node.parent.right:
    , p, ^6 d- l' g% p! t& z, C                node.parent.right=left
    9 t& ?; K6 G: @9 U0 h4 f            else:
    ; n; N2 Z. x. ]1 \. y                node.parent.left=left( U& q6 I+ e$ s0 C
            node.parent=left
    - W8 L8 ~. n( ?% b& {4 e/ e8 X. v5 k6 {& |
        def rb_insert_rebalance(self,node):( c8 I  n/ Y8 \3 m' R- N) F/ ^
            parent=node.parent$ d$ B" y; u$ l
            while parent and parent.color==RED:0 Z+ @; o$ R1 n8 K) w' W- _
                gparent = parent.parent
    3 A! Y$ \7 C, }3 }4 f) @            if parent==gparent.left:' ~: c" Y3 {% }& U% w6 E. p
                    uncle=gparent.right$ p4 y( o( o0 f, `" U6 I
                    if uncle and uncle.color==RED:
    % I. e7 i' a) a/ g8 k1 _                    uncle.color=BLACK  F4 I6 c" d) w5 P
                        parent.color=BLACK4 w& l- B0 d8 Z1 p- w+ ~, @" S
                        gparent.color=RED; A: K6 D- y: ?6 A! g# [
                        node=gparent. u. E. d0 F# M" m
                    else:3 A; o; B6 f- X7 d7 P
                        if parent.right==node:
    ) h; e9 T0 E1 c# F( V                        self.rb_rotate_left(parent)
    ; P7 i( w2 n5 o; U: r                        tmp=parent0 o/ G% N5 i' P! y* A9 o: p
                            parent=node
    7 q3 B, w* b# @7 d                        node=tmp
    ! `2 ?2 E! Q7 D$ k; a% d                    parent.color=BLACK( U/ m/ [! A0 F
                        gparent.color=RED
    1 B+ H! N6 K. a! z% U. V
    4 |' p; }, K/ q8 Z. B# T; ^                    self.rb_rotate_right(gparent)
    0 V" U7 i0 U( v4 ]  I* D
    ( X( I+ H( b# i8 s" }                    if uncle:2 Y( \6 {) l: B$ o
                            if uncle.right:" J# V2 M; B  T8 S5 X, H
                                node=uncle.right2 v9 `& k; u! l* d1 s
                else:
    * i- L# I8 K) G- y                uncle=gparent.left1 F3 o; {* k( D
                    if uncle and uncle.color==RED:
    0 M& Q0 ]# u+ U. K3 t                    uncle.color=BLACK: f8 n! t" G) \3 D: h$ s' ]
                        parent.color=BLACK5 M0 B, N0 {% ?4 t
                        gparent.color=RED+ r5 d+ E7 p  V$ V( t$ m! @8 |
                        node=gparent0 Q7 z! M( S- v! S# N& {0 \$ Y
                    else:4 v5 E* {4 w( v- v$ l! x0 d
                        if parent.left==node:
    & x$ P: |# W3 m3 `. I- ~1 X4 x                        self.rb_rotate_right(parent)
    ' O& X1 k) o2 g4 h8 B3 E$ r9 _. `/ h                        tmp=parent
    ' o6 t% F0 u, @                        parent=node# M% ^9 S7 [' K
                            node=tmp: B- M/ D* s) b% p
                        parent.color=BLACK" H& C+ c- j: \) q& d
                        gparent.color=RED9 H/ T+ q3 M' y0 \, `& w. O
                        self.rb_rotate_left(gparent)" q8 @) k! ?  l

    4 I% U0 n$ e3 A* _/ z3 J' T                    if uncle:& E# |& }" u/ d* }! |. B
                            if uncle.left:* i1 D, z# M% K& g( g0 A9 A
                                node=uncle.left
    * V$ a7 e9 W( T5 ~9 O5 H" C( a# U* L            parent=node.parent
    ' F* C  A, z4 n$ |& r# g" }$ V! [6 L3 U/ p
    ) _! |  z! d# n' [" {
            self.root.color=BLACK  {; i  w/ D- y0 b$ @
            ; G' c+ k. V4 x$ G
       
    7 w# u9 `+ \2 w    def rb_search_auxiliary(self,node):
    6 x6 V- a- I2 I3 c        tmp=self.root
    - }7 P5 c8 m: u4 F, t        parent=None7 D! h& `8 t! o0 R) [4 f5 z
            while tmp is not None:
    ; W" C7 S, r! L            parent=tmp
    ; F" g  D0 }3 ^0 ?            cmp=self.cmp(node,tmp)
    ! |# h% m7 M7 i- i) O5 _            if cmp<0:3 W) Z) ]- X' w5 h
                    tmp=tmp.left
    2 H% j% \( w( f% A% A# D5 O. e            else:4 M+ b. p0 A1 P0 K1 V; ~, ^
                    if cmp>0:* T9 y: ?- G) V6 z
                        tmp=tmp.right2 F& n! K% f+ Y$ {$ i1 U
                    else:
    $ b, q3 x) t; C. K  s- o9 C                    return tmp,parent- d4 ?- r% C* ?+ [& ]

    8 o, ?0 m! c: v( `8 u' `+ @8 F! n( U        return None,parent
    0 O& i& f" M" ^9 J1 y1 m2 r$ R/ Z. t. |
        def rb_insert(self,data):
    6 P2 B$ a0 A  h* @  H* g% @! S1 h        tmp=None
    ; K. S  `) f6 M  w        node=Node(data); r/ v. \1 E3 W  U1 \' |) `: W5 G
            tmp,parent=self.rb_search_auxiliary(node): @. C) c2 ~$ y' l& r9 ^/ U
    / C$ M; ]. i% C! o( {
            if tmp is not None:
    , V6 ~  a- v4 D% j8 C            return 1 j. c4 d0 [2 b, s; @# C3 i+ M: H2 y
    7 ~: X6 G& ]. Y+ ?# ?: @
            node.parent =parent. h2 V3 ]5 Z1 ]- w+ c4 V3 i
            node.left=node.right=None
    , j2 Q4 l% g" Z  I% _' [' ^. M. F. t        node.color=RED
    / K1 @# P# N; u9 Q; [9 j  ^
    - v% h' h% w  r4 C; x$ i9 A        if parent is not None:. X2 H/ s$ H/ }( C; F: Z

    # o4 H# K  Y& z; |- E8 ?7 a            if self.cmp(parent,node)>0:
    ( N6 s5 f: o( ?                parent.left=node
    $ r  P! ^2 s# t            else:
    $ m; [5 m5 z9 Z" ]4 c                parent.right=node
    $ G+ h; @% |5 f# L  \$ m; T        else:6 J+ U3 s. Z7 q; S4 A, [- O7 D& w& Z
                self.root=node
    2 y$ Z3 X( W3 ^        return self.rb_insert_rebalance(node)3 j0 z( j* ^8 u7 ^

    / u. S5 o3 r' m) x6 v: J    def rb_erase_rebalance(self,node,parent):
    + H" }+ o4 O: s        while((node is None or node.color==BLACK)and node !=self.root):3 x8 V3 G+ k) A( _: {) ~
                if parent.left==node:
    , x6 \, m/ f/ C                other=parent.right
    ! j5 v3 b( r% j7 H# y                if other.color==RED:
    2 I: n5 z3 M3 C% t* E( T3 Z                    other.color=BALCK8 b3 C9 U5 O, N! E7 V2 m4 v9 y
                        parent.color=RED
    & n+ c) X$ n+ ^5 p) `2 b0 K, ~                    self.rb_rotate_left(parent)
    8 U# s4 P: h5 O4 Y: K1 j7 A                    other=parent.right4 _7 \1 o, Z- g
                    if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color ==BLACK):& F5 Z' b/ d" q$ T- Z
                        other.color=RED
    * k! ~0 O3 X  v% N6 ~2 `4 u, u                    node=parent
    2 _$ G( {) \4 I; }                    parent=node.parent
    9 n& [  |7 d3 }+ m& Z$ g                else:" D# U0 m+ E% R' x" g
                        if other.right is None or other.right.color==BLACK:
    , b/ a/ b! J* G8 `/ h% _# L
    , i, V; s( k1 q& [6 }3 D( k                        if other.left is not None:
      t6 i. M- ^4 h3 X                            other.left.color=BLACK
    , g7 q6 @6 J. Z% Y) v: t: t                        other.color=RED
    # f6 {! X; c8 y- t7 W                        self.rb_rotate_right(other)! N; _' D" ^8 u
                            other=parent.right
    5 h9 w; s  C7 ~$ A: ^- V% y
    0 N  c' a7 q0 \6 y* e1 a) s                    other.color=parent.color$ ]" x- u6 M: T8 F! J, N
                        parent.color=BLACK/ L8 k3 \) }9 u( H
                        if other.right is not None:$ V! Q9 r0 K% F  m; \
                            other.right.color=BLACK. |& b3 y& i! T, T9 r4 C# C
                        self.rb_rotate_left(parent)
    / z) @$ a$ o6 j  s7 J/ i7 W, R' c                    node=self.root
    3 v+ p$ u! ~  C. i0 [6 j7 z                    break' }' B. j. [! Q( L8 Y: f
                else:
    , O; u/ F  J% t9 a3 s6 o5 s, V                other=parent.left
    1 |' e% C( ?( e8 j5 A$ |                if other.color==RED:" D5 F% y3 s/ q: Z! P* e+ u
                        other.color=BLACK, }4 [) l  L8 F6 E& Z( \& o
                        parent.color=RED+ ]) c$ H: K- r) e
                        self.rb_rotate_right(parent)
    . D  t9 f3 c. ?                    other=parent.left* o! {1 {0 C% |, ]" @& w
                    if (other.left is None or other.left.color==BLACK) and (other.right is None or other.right.color==BLACK):
    : d3 U, I) k. i5 C  B5 y5 i6 d                    other.color=RED5 m& d* b4 i2 y3 x: S" H) g' _
                        node=parent; a; A, W# V: H3 l6 B& r
                        parent=node.parent
    ( z; V8 d* Z# ~1 r  |                else:3 O) H7 C6 W7 F+ X3 U' P
                        if other.left is None or other.left.color==BLACK:8 w: V3 G/ ^8 K
                            if other.right is not None:
    * ^: t; z" L/ ^                            other.right.color=BLACK
    6 q/ N. ^- w' x# z! m6 M# Q/ Z$ D: u- Z8 \3 {) x, [1 w7 e3 B
                            other.color=RED
    7 o) u1 w2 V) V                        self.rb_rotate_left(other)
    $ C/ I. o1 t0 P, X3 b/ }6 D                        other=parent.left
    : }) ^  {  G. Y8 M' i( Z$ N. V% |0 j6 R- j2 m2 T
                        other.color=parent.color/ A# V: L8 ~1 ]5 S# B, v+ v
                        parent.color=BLACK4 B8 z4 I' |0 K2 W
    7 x; ~# p( A+ j5 r# X6 [  j
                        if other.left is not None:& `% ?: l: a; @  }1 V- U; X
                            other.left.color=BLACK
    8 ~8 f; L8 d0 [# D$ }" H* Q0 N+ G- m# T7 P8 {# X4 M2 v% {2 B
                        self.rb_rotate_right(parent), m4 N% v& z, C, |8 T
                        node=self.root
    - m: {/ A+ [0 \# Z; \                    break: K9 j: L3 t; w/ Q1 w7 B; k" P

    1 {3 y9 i4 }+ Q- q2 N" c" l4 @3 p/ x0 q  t' @4 F8 _$ |' C

    9 U9 j- k+ ?( t( @7 B+ z5 Q        if node is not None:
    # ^) b( \1 u2 F) n& }            node.color=BLACK    8 g+ \; W) @& l! Q) D4 A9 r
    . s: w, J" e8 W5 B# S: y
        def rb_erase(self,data):$ z- d8 W: O, w1 ?
            tmp_node=Node(data)0 e! ^! E5 V# m* V* L: c
            node,parent = self.rb_search_auxiliary(tmp_node)
    ( a4 B- J! D2 o2 j. k1 C7 c        if node is None:
    9 t# u! ]7 t5 y& @/ q7 f- \            print "data is not exist."
    + g* u9 i& w% b3 R  C5 L% w" }            return
    % Z+ v$ }% g4 ?6 M9 c) G        
    ) w/ d0 T6 {& b2 ?/ F8 r        old =node( Z+ J( S) W/ E- L! {$ f
            if node.left and node.right:
    & l. o1 Z( E0 G" U; x7 Z            node=node.right
    5 T9 {6 o9 q$ R3 _& Q+ H) t
    ) K8 R+ [. A  |3 |8 v& ?: ]4 d3 l            left=node.left
    $ @2 {8 b' |- V4 f9 L; a% K" Q. c1 H            while left is not None:7 R; U( V( ^& q+ w* l$ t
                    node =left
    & H8 b+ P: L$ M                left=node.left$ F4 ^1 V, h# A  D9 ^
    # R9 O4 U9 |& H7 h  {% H$ S
                child=node.right
      \* h! v6 \: ~            parent=node.parent
      t; W0 U* Y. Q( F) x  }: w4 q            color=node.color; z$ {2 j/ u4 I! @
    , n9 a2 u8 C0 r5 ]$ _& x7 P9 T: x
                if child:1 l; x6 ?# t' ^. F
                    child.parent=parent
    + I4 C: ^: T6 f5 {5 u            if parent:
    # ^& a4 j. z0 C, b                if parent.left==node:
    ! A/ o  k: q8 O. R: M4 e& M                    parent.left=child/ m% [7 F* Q1 E5 v( }
                    else:
    * c) @9 u' i# F/ L8 K1 Q                    parent.right=child/ w$ X( T8 g/ Z& E' T
    $ s+ a/ q6 }3 p# ?7 {2 a
                else:( j0 v6 g  {% x# ~6 S/ {
                    self.root=child7 a/ \* h  V& @- [4 h
      b4 }6 W) s9 i- X( v( _  V
                if node.parent==old:
    0 V; E2 t; o" F9 t                parent=node
    % u1 I6 ~' l# F7 @9 z            node.parent=old.parent
    ! k! i3 a2 Z9 ?0 P: u4 v; N            node.color=old.color
    ) H: Y7 |# f% m7 F/ Y( m" k) a* ~8 B            node.right=old.right
      m  u2 G; E, x1 K/ M2 X            node.left=old.left
    / p% r2 U3 `( H7 o. a( s' o6 c
    ( J/ ]3 \( b/ W) M0 q: A0 {. }            if old.parent:
    - x& [6 j& h, H                if old.parent.left==old:- N4 x- \- ]0 U7 r7 B- o
                         old.parent.left=node0 o- t1 m* K& X* T  c( h2 h
                    else:
    + L+ S0 a  {' d; N: w8 O                     old.parent.right=node
    1 H- W- R) q+ @3 P* L0 S            else:
    9 N! D% w9 i) @: f) a( [7 \( v                self.root=node) b3 y3 E4 e% }, x3 P

    / H& P; l& I( [3 j% R. H/ e" k            old.left.parent=node
    $ Y- `2 z1 C/ D$ K* `  R            if old.right:2 J% |2 E: q& N6 ~* j7 s: H$ _
                    old.right.parent=node" A, [6 _+ n5 {. U5 A3 s
    ; }6 @! U+ V) M" x
            else:
    1 h" i6 T% Z) M            if node.left is None:
    7 L& t8 [. t3 b( k7 g4 _* h                child =node.right
    + O2 D3 k6 @  l2 |  s5 L" y            else:
    7 v& E0 p: D! h1 o' b+ a' K                if node.left is not None:0 W( f- C/ n: \
                        child=node.left
    - s+ F, g% t$ N3 T                else:
    " G( B+ B& O8 P# r                    child=None
    ( ?, I, o% l: `" g0 ~# {9 s            parent=node.parent
    # g+ f- ?: X: [$ s            color=node.color
    $ U5 |- ^) l+ E6 `            if child:
    8 M# M8 J, ?* R: t* N- j8 x# e" M                child.parent=parent# v2 y, G+ _3 u5 ^# d
                if parent:
    2 ]5 [9 \# n( j5 _* s: a9 ^                if parent.left==node:
    , n  X% D1 q* p9 O% `4 P, \                    parent.left=child
    ! r* a- I! c: H/ Z9 F- U                else:" W; r9 k; K' H1 W  u4 I: @+ k# I" o* I
                        parent.right=child! @5 e. g4 H4 r) k
                else:
      L4 r8 p, R. r& P* r                self.root=child
    # f! t7 \& n/ j! R- M4 A/ F5 @! x/ G& M$ F. V0 v3 M9 ?) e) L
            if color==BLACK:& t& L( Z* C, k5 ^0 x2 O
    , D' D7 y% G+ ?, d8 D6 }7 v# z
                self.rb_erase_rebalance(child,parent)
    # _" h! I/ T5 c8 T" I" p
      p" V. ^! w, q% b" o' {
    / l$ q7 v  y9 k    def rb_travelse(self,node):$ F9 v* D/ l2 {
             if node is not None:0 ^5 i5 w8 d. \- \$ C4 X* u- h- t
                 print str(node.data)+'\t'+str(node.color)1 \0 b& f2 k' _. l: H* Y+ v$ ^( J
                 self.rb_travelse(node.left)/ c% a0 L: l) |$ D; r* q
                 if node.parent:
    / j* F* s, k* z+ t& H" i                 if node.parent.color==0 and node.color==0:/ f& C* ^, {5 h* M# E
                         print "error"* P/ @) X3 ]# g, J) {
                         return
    # L" K2 l) h1 g' o             self.rb_travelse(node.right)/ t7 A+ L! W& |8 o$ |! q- t: j
                 if node.parent:/ X: ?' L: {# }6 w' ]2 s4 Y
                     if node.parent.color==0 and node.color==0:; Q! z/ k9 Y5 w2 x
                         print "error"
    ) i% o* Z7 S: K7 F: ~8 L  ^                     return! v# r+ |. n( x1 R1 y
    8 e/ q% V, s6 X0 B. C+ t
             return) r. o- w& B1 a3 N
                    7 V/ v2 Q/ _( \7 I' b
         % W, g# W% F  T4 E$ c# @
        def cmp(self,node1,node2):" P' u% W  U* N
            if node1.data>node2.data :7 ^9 a, N5 p/ v
                return 1
    ( U1 q/ w7 |9 K  G: h. c        if node1.data==node2.data :
    7 W3 I4 u* [3 k$ l1 l) Z* L3 O! ~            return 0! m! i: Q. U8 g0 U9 T+ A
            if node1.data<node2.data:4 H4 Y7 B" I8 S# B) q; ?
                return -1
    3 t' e& Y3 ?! b6 l  Y% w. @
    # x& G0 B! B6 n) w4 ~if __name__=="__main__":
    . u  K) |) S+ f1 g5 V. _2 }    print "main"7 U7 A& b% p: l3 L
        data=[28,6,39,78,6,43,61,56,71,38]$ z% E3 E& m1 s5 W/ Q
        #for i in range(10):9 l1 m- V- M; ?5 W' ^1 r
        #    rand_num = random.randint(0, 100)" m! ~; k' ]  b& p) R# m
        #    data.append(rand_num)
    3 v8 {  m" E! I1 i7 l    #print data4 e! ]8 X6 x/ h) m# `! h0 w2 Q# B
        t=RBtree()
    9 C0 x8 i" W* n5 w0 V8 z- f- }( x3 ]8 `: C# v

    7 h; A/ C, T6 p. b+ f    for i in range(10):
    ; W+ f1 o9 S; R  ^! A4 p+ Z        t.rb_insert(data[i])* ~- z! [" Z$ O; ~1 x5 p6 h9 ]
    4 J; K9 h+ N! R; k
    % N0 J2 z' K6 G
        t.rb_travelse(t.root); Z/ N- V8 P. e& q* Q

    4 \- L9 H4 N: I. D( e- i, W8 w    print "---------------------------------"2 L' Z8 u' b6 H, y' B, S0 N
        t.rb_erase(data[7])
    6 o8 a  a2 c% b0 t# {        # e! J4 G; q7 F
        t.rb_travelse(t.root)# I4 B- E3 Y1 o
    & a+ a# n- J" j; [
    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-9-1 18:50 , Processed in 0.418589 second(s), 80 queries .

    回顶部