红黑树:高效平衡的奥秘
红黑树的概念与特性
红黑树是一种自平衡的二叉搜索树,它在插入和删除操作时通过特定的规则保持平衡,确保最坏情况下的时间复杂度为O(log n)。红黑树满足以下特性:
- 每个节点要么是红色,要么是黑色。
- 根节点是黑色的。
- 所有叶子节点(NIL节点)是黑色的。
- 如果一个节点是红色的,那么它的两个子节点都是黑色的。
- 从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点。
这些特性保证了红黑树的高度始终保持在O(log n)范围内,从而保证了高效的查找、插入和删除操作。
红黑树的节点结构
红黑树的节点通常包含以下字段:键值、颜色标记、左子节点指针、右子节点指针和父节点指针。以下是C++中红黑树节点的定义:
enum Color { RED, BLACK }; template <typename T> struct RBTreeNode { T key; Color color; RBTreeNode<T>* left; RBTreeNode<T>* right; RBTreeNode<T>* parent; RBTreeNode(T k, Color c = RED, RBTreeNode<T>* l = nullptr, RBTreeNode<T>* r = nullptr, RBTreeNode<T>* p = nullptr) : key(k), color(c), left(l), right(r), parent(p) {} };红黑树的插入操作
红黑树的插入操作分为两步:首先像普通二叉搜索树一样插入节点,然后通过旋转和重新着色调整树的结构以保持红黑树的特性。
插入新节点时,通常将其颜色设为红色,以避免违反黑色节点数量的规则。插入后,可能需要调整树的结构:
template <typename T> void RBTree<T>::insert(T key) { RBTreeNode<T>* newNode = new RBTreeNode<T>(key); insertHelper(newNode); fixInsert(newNode); } template <typename T> void RBTree<T>::insertHelper(RBTreeNode<T>* newNode) { RBTreeNode<T>* y = nullptr; RBTreeNode<T>* x = root; while (x != nullptr) { y = x; if (newNode->key < x->key) { x = x->left; } else { x = x->right; } } newNode->parent = y; if (y == nullptr) { root = newNode; } else if (newNode->key < y->key) { y->left = newNode; } else { y->right = newNode; } } template <typename T> void RBTree<T>::fixInsert(RBTreeNode<T>* newNode) { while (newNode != root && newNode->parent->color == RED) { if (newNode->parent == newNode->parent->parent->left) { RBTreeNode<T>* uncle = newNode->parent->parent->right; if (uncle != nullptr && uncle->color == RED) { newNode->parent->color = BLACK; uncle->color = BLACK; newNode->parent->parent->color = RED; newNode = newNode->parent->parent; } else { if (newNode == newNode->parent->right) { newNode = newNode->parent; leftRotate(newNode); } newNode->parent->color = BLACK; newNode->parent->parent->color = RED; rightRotate(newNode->parent->parent); } } else { RBTreeNode<T>* uncle = newNode->parent->parent->left; if (uncle != nullptr && uncle->color == RED) { newNode->parent->color = BLACK; uncle->color = BLACK; newNode->parent 忘掉所有的顾虑,学会相信自己的能力,让心中的梦想引领我们去探索生活未知的精彩。生活就像一首曲子,每一个音符都是独特的体验,学会欣赏每一次演奏,才能获得真正的快乐。财富不是人生的全部,珍惜健康与快乐,才是获得真正幸福的关键,让内心充满平和与温暖。面对生活中的挑战,勇敢坚持自己的选择,心中有光,便能在艰难中找到前行的力量。生活中的每一块拼图,都是塑造完整自我的重要部分,要耐心拼接,才能发现最终的美丽画面。 https://blog.csdn.net/2601_95543843/article/details/159161559 https://blog.csdn.net/f7qpzrq6/article/details/159161563 https://blog.csdn.net/c0vhp37g/article/details/159161562 https://blog.csdn.net/2601_95543726/article/details/159161566 https://blog.csdn.net/r8dw00af/article/details/159161569 https://blog.csdn.net/2601_95543733/article/details/159161570 https://blog.csdn.net/n02zcgbo/article/details/159161574 https://blog.csdn.net/gv7zpnnn/article/details/159161576 https://blog.csdn.net/a4y9n4ct/article/details/159161577 https://blog.csdn.net/wwabsgdg/article/details/159161579 https://blog.csdn.net/2601_95543779/article/details/159161580 https://blog.csdn.net/2601_95555317/article/details/159161582 https://blog.csdn.net/2601_95555287/article/details/159161583 https://blog.csdn.net/2601_95543718/article/details/159161584 https://blog.csdn.net/ibenzdmo/article/details/159161587 https://blog.csdn.net/glz4zfpc/article/details/159161588 https://blog.csdn.net/xcmpf0zt/article/details/159161592 https://blog.csdn.net/ol6gpxs6/article/details/159161593 https://blog.csdn.net/2601_95543722/article/details/159161594 https://blog.csdn.net/2601_95543821/article/details/159161596 https://blog.csdn.net/2601_95543826/article/details/159161595 https://blog.csdn.net/r306g9ac/article/details/159161598 https://blog.csdn.net/t5i2r0v3/article/details/159161603 https://blog.csdn.net/n9tgndxg/article/details/159161604 https://blog.csdn.net/i4pepl1d/article/details/159161605 https://blog.csdn.net/2601_95555316/article/details/159161608 https://blog.csdn.net/pxp20r88/article/details/159161609 https://blog.csdn.net/dfcvz685/article/details/159161616 https://blog.csdn.net/tfpsg2zl/article/details/159161612 https://blog.csdn.net/mc8n62vs/article/details/159161622 https://blog.csdn.net/k85yepcg/article/details/159161624 https://blog.csdn.net/ycxewsul/article/details/159161625 https://blog.csdn.net/wq9evnh3/article/details/159161629 https://blog.csdn.net/lmir2d17/article/details/159161631 https://blog.csdn.net/lp03l0r8/article/details/159161636 https://blog.csdn.net/2601_95543764/article/details/159161637 https://blog.csdn.net/ncimi2ja/article/details/159161633 https://blog.csdn.net/poh567gd/article/details/159161640 https://blog.csdn.net/2601_95543828/article/details/159161644 https://blog.csdn.net/2601_95543771/article/details/159161645 https://blog.csdn.net/s7yorjmj/article/details/159161651 https://blog.csdn.net/wh2d8soe/article/details/159161689 https://blog.csdn.net/2601_95544164/article/details/159161691 https://blog.csdn.net/rn7ipx1w/article/details/159161695 https://blog.csdn.net/nryzt5bz/article/details/159161696 https://blog.csdn.net/rjo298en/article/details/159161698 https://blog.csdn.net/kwus3wtw/article/details/159161699 https://blog.csdn.net/pti47tuy/article/details/159161715 https://blog.csdn.net/o9ukk0b7/article/details/159161730 https://blog.csdn.net/oqwhzqg6/article/details/159161732 https://blog.csdn.net/vywfueu6/article/details/159161735 https://blog.csdn.net/pbyli8m8/article/details/159161741 https://blog.csdn.net/b3u4ouqf/article/details/159161742 https://blog.csdn.net/wzq6c1d6/article/details/159161743 https://blog.csdn.net/v9vvwzsc/article/details/159161744 https://blog.csdn.net/2601_95544138/article/details/159161746 https://blog.csdn.net/njya841u/article/details/159161748 https://blog.csdn.net/b68douba/article/details/159161750 https://blog.csdn.net/kgoubjv5/article/details/159161751 https://blog.csdn.net/ot6hq6nf/article/details/159161752 https://blog.csdn.net/jm6bgxkp/article/details/159161754 https://blog.csdn.net/hz335jx4/article/details/159161759 https://blog.csdn.net/xzkkfd11/article/details/159161761 https://blog.csdn.net/v3n18rtk/article/details/159161762 https://blog.csdn.net/ooggj3zp/article/details/159161766 https://blog.csdn.net/2601_95555416/article/details/159161767 https://blog.csdn.net/2601_95555428/article/details/159161770 https://blog.csdn.net/qafq81em/article/details/159161769 https://blog.csdn.net/he3gnhm6/article/details/159161768 https://blog.csdn.net/2601_95544175/article/details/159161775 https://blog.csdn.net/bpneufdg/article/details/159161773 https://blog.csdn.net/2601_95544149/article/details/159161777 https://blog.csdn.net/n2x72jzi/article/details/159161778 https://blog.csdn.net/e3n4424y/article/details/159161780 https://blog.csdn.net/dy12tmrf/article/details/159161782 https://blog.csdn.net/g0fmhue9/article/details/159161784 https://blog.csdn.net/ysgvdst2/article/details/159161785 https://blog.csdn.net/s0zymiq0/article/details/159161786 https://blog.csdn.net/iua1h1vt/article/details/159161790 https://blog.csdn.net/2601_95544113/article/details/159161791 https://blog.csdn.net/p38ls0ag/article/details/159161792 https://blog.csdn.net/nryzt5bz/article/details/159161796 https://blog.csdn.net/2601_95555422/article/details/159161797 https://blog.csdn.net/qbnd6lds/article/details/159161799 https://blog.csdn.net/2601_95544164/article/details/159161801 https://blog.csdn.net/vxrxlflk/article/details/159161802 https://blog.csdn.net/sqob3rfk/article/details/159161803 https://blog.csdn.net/ckzm3fuk/article/details/159161804 https://blog.csdn.net/2601_95544206/article/details/159161805 https://blog.csdn.net/rn7ipx1w/article/details/159161813 https://blog.csdn.net/zwi1y625/article/details/159161798 https://blog.csdn.net/fo3atnop/article/details/159161812 https://blog.csdn.net/rjo298en/article/details/159161814 https://blog.csdn.net/wh2d8soe/article/details/159161817 https://blog.csdn.net/2601_95555421/article/details/159161810 https://blog.csdn.net/bgluenl8/article/details/159161823 https://blog.csdn.net/w3e2ztnx/article/details/159161820 https://blog.csdn.net/kwus3wtw/article/details/159161824 https://blog.csdn.net/kjtnfh5v/article/details/159161825 https://blog.csdn.net/dskkjon0/article/details/159161826 https://blog.csdn.net/ctnjyt7k/article/details/159161828 https://blog.csdn.net/ki78qojd/article/details/159161811 https://blog.csdn.net/vdp8kn2a/article/details/159161831 https://blog.csdn.net/2601_95544173/article/details/159161833 https://blog.csdn.net/x56qi673/article/details/159161835 https://blog.csdn.net/2601_95555442/article/details/159161837 https://blog.csdn.net/c3atvgx6/article/details/159161838 https://blog.csdn.net/mnqkny9f/article/details/159161839 https://blog.csdn.net/wko5z6dr/article/details/159161840 https://blog.csdn.net/2601_95544209/article/details/159161842 https://blog.csdn.net/2601_95544188/article/details/159161845 https://blog.csdn.net/sbk698lr/article/details/159161848 https://blog.csdn.net/gslb0f3d/article/details/159161854 https://blog.csdn.net/m2be8m9u/article/details/159161858 https://blog.csdn.net/2601_95555418/article/details/159161860 https://blog.csdn.net/2601_95555419/article/details/159161872 https://blog.csdn.net/n2x72jzi/article/details/159161876 https://blog.csdn.net/oqwhzqg6/article/details/159161887 https://blog.csdn.net/c1l44o9i/article/details/159161895 https://blog.csdn.net/kgoubjv5/article/details/159161896 https://blog.csdn.net/v9vvwzsc/article/details/159161902 https://blog.csdn.net/2601_95555428/article/details/159161904 https://blog.csdn.net/b3u4ouqf/article/details/159161903 https://blog.csdn.net/2601_95544175/article/details/159161909 https://blog.csdn.net/njya841u/article/details/159161911 https://blog.csdn.net/2601_95544138/article/details/159161913 https://blog.csdn.net/jm6bgxkp/article/details/159161915 https://blog.csdn.net/qafq81em/article/details/159161916 https://blog.csdn.net/e3n4424y/article/details/159161918 https://blog.csdn.net/2601_95544113/article/details/159161919 https://blog.csdn.net/vywfueu6/article/details/159161920 https://blog.csdn.net/hz335jx4/article/details/159161928 https://blog.csdn.net/dy12tmrf/article/details/159161929 https://blog.csdn.net/pbyli8m8/article/details/159161930 https://blog.csdn.net/ckzm3fuk/article/details/159161933 https://blog.csdn.net/wzq6c1d6/article/details/159161931 https://blog.csdn.net/o9ukk0b7/article/details/159161936 https://blog.csdn.net/iua1h1vt/article/details/159161937 https://blog.csdn.net/kjtnfh5v/article/details/159161943 https://blog.csdn.net/2601_95544149/article/details/159161946 https://blog.csdn.net/vxrxlflk/article/details/159161948 https://blog.csdn.net/ysgvdst2/article/details/159161949 https://blog.csdn.net/sbk698lr/article/details/159161952 https://blog.csdn.net/w3e2ztnx/article/details/159161953 https://blog.csdn.net/ctnjyt7k/article/details/159161941 https://blog.csdn.net/bpneufdg/article/details/159161955 https://blog.csdn.net/ot6hq6nf/article/details/159161954 https://blog.csdn.net/v3n18rtk/article/details/159161959 https://blog.csdn.net/c3atvgx6/article/details/159161958 https://blog.csdn.net/qbnd6lds/article/details/159161960 https://blog.csdn.net/gslb0f3d/article/details/159161961 https://blog.csdn.net/fo3atnop/article/details/159161963 https://blog.csdn.net/2601_95555425/article/details/159161962 https://blog.csdn.net/mnqkny9f/article/details/159161966 https://blog.csdn.net/zwi1y625/article/details/159161967 https://blog.csdn.net/m2be8m9u/article/details/159161973 https://blog.csdn.net/dskkjon0/article/details/159161974 https://blog.csdn.net/2601_95544188/article/details/159161976 https://blog.csdn.net/2601_95544206/article/details/159161979 https://blog.csdn.net/l03ujtje/article/details/159161981 https://blog.csdn.net/2601_95555442/article/details/159161983 https://blog.csdn.net/wko5z6dr/article/details/159161986 https://blog.csdn.net/sqob3rfk/article/details/159161988 https://blog.csdn.net/2601_95555422/article/details/159161989 https://blog.csdn.net/he3gnhm6/article/details/159161990 https://blog.csdn.net/xzkkfd11/article/details/159161993 https://blog.csdn.net/2601_95555421/article/details/159161995 https://blog.csdn.net/s0zymiq0/article/details/159161996 https://blog.csdn.net/2601_95555416/article/details/159161997 https://blog.csdn.net/vdp8kn2a/article/details/159161998 https://blog.csdn.net/2601_95544209/article/details/159161999 https://blog.csdn.net/2601_95555418/article/details/159162000 https://blog.csdn.net/p38ls0ag/article/details/159162003 https://blog.csdn.net/g0fmhue9/article/details/159162004 https://blog.csdn.net/bgluenl8/article/details/159162005 https://blog.csdn.net/2601_95544173/article/details/159162009 https://blog.csdn.net/2601_95555419/article/details/159162012 https://blog.csdn.net/2601_95531899/article/details/159162062 https://blog.csdn.net/2601_95542988/article/details/159162064 https://blog.csdn.net/evztboj7/article/details/159162067 https://blog.csdn.net/2601_95542940/article/details/159162066 https://blog.csdn.net/2601_95555526/article/details/159162069 https://blog.csdn.net/odrjuq3o/article/details/159162080 https://blog.csdn.net/2601_95531606/article/details/159162097 https://blog.csdn.net/ih2w2z3p/article/details/159162102 https://blog.csdn.net/2601_95544404/article/details/159162108 https://blog.csdn.net/gnib9u50/article/details/159162111 https://blog.csdn.net/rbtdhifs/article/details/159162117 https://blog.csdn.net/wdccy26u/article/details/159162122 https://blog.csdn.net/db81eu4b/article/details/159162123 https://blog.csdn.net/eewbe3pd/article/details/159162125 https://blog.csdn.net/fx5m7tst/article/details/159162132 https://blog.csdn.net/2601_95544416/article/details/159162131 https://blog.csdn.net/pa78xqm9/article/details/159162133 https://blog.csdn.net/izygupyd/article/details/159162137 https://blog.csdn.net/mc8l6x4p/article/details/159162138 https://blog.csdn.net/urowjikf/article/details/159162139 https://blog.csdn.net/kwphkbu7/article/details/159162142 https://blog.csdn.net/frgjzjuh/article/details/159162143 https://blog.csdn.net/ldclm301/article/details/159162144 https://blog.csdn.net/bcq5r6g0/article/details/159162145 https://blog.csdn.net/2601_95511291/article/details/159162147 https://blog.csdn.net/x0nt76r5/article/details/159162149 https://blog.csdn.net/sllte1qn/article/details/159162148 https://blog.csdn.net/thv1x8a6/article/details/159162153 https://blog.csdn.net/k147rmx7/article/details/159162152 https://blog.csdn.net/nsvijbk6/article/details/159162155 https://blog.csdn.net/xwvnnnr2/article/details/159162154 https://blog.csdn.net/2601_95542988/article/details/159162157 https://blog.csdn.net/t6u5e5pt/article/details/159162159 https://blog.csdn.net/vu7v70l4/article/details/159162161 https://blog.csdn.net/axrq5nhg/article/details/159162162 https://blog.csdn.net/dsltd6nv/article/details/159162164 https://blog.csdn.net/h4j26d49/article/details/159162165 https://blog.csdn.net/i55xtzjy/article/details/159162168 https://blog.csdn.net/jmy2zg6p/article/details/159162169 https://blog.csdn.net/js0jcl4a/article/details/159162173 https://blog.csdn.net/dhsehlad/article/details/159162174 https://blog.csdn.net/moamqks1/article/details/159162176 https://blog.csdn.net/ef4sc3ar/article/details/159162177 https://blog.csdn.net/j6gnb5md/article/details/159162179 https://blog.csdn.net/enriln3d/article/details/159162180 https://blog.csdn.net/i3idhvpf/article/details/159162181 https://blog.csdn.net/xoqpdzbl/article/details/159162175 https://blog.csdn.net/kk08u35d/article/details/159162182 https://blog.csdn.net/nlrz7ivy/article/details/159162183 https://blog.csdn.net/cyv207bb/article/details/159162184 https://blog.csdn.net/ufmgamnw/article/details/159162185 https://blog.csdn.net/2601_95542940/article/details/159162186 https://blog.csdn.net/2601_95555526/article/details/159162187 https://blog.csdn.net/2601_95531326/article/details/159162188 https://blog.csdn.net/a5yyj01i/article/details/159162189 https://blog.csdn.net/dn5yexoa/article/details/159162194 https://blog.csdn.net/2601_95499172/article/details/159162192 https://blog.csdn.net/da6sx5ow/article/details/159162196 https://blog.csdn.net/2601_95499174/article/details/159162199 https://blog.csdn.net/gyi972y2/article/details/159162200 https://blog.csdn.net/2601_95531928/article/details/159162201 https://blog.csdn.net/x22g8h7z/article/details/159162198 https://blog.csdn.net/g0aa2h7p/article/details/159162205 https://blog.csdn.net/o385fufg/article/details/159162206 https://blog.csdn.net/wswmo6wb/article/details/159162204 https://blog.csdn.net/w4roeu0i/article/details/159162202 https://blog.csdn.net/2601_95511308/article/details/159162212 https://blog.csdn.net/2601_95531655/article/details/159162215 https://blog.csdn.net/nsgt2iha/article/details/159162220 https://blog.csdn.net/rnyc81ut/article/details/159162222 https://blog.csdn.net/2601_95543016/article/details/159162233 https://blog.csdn.net/ovg9x3bz/article/details/159162234 https://blog.csdn.net/2601_95531606/article/details/159162245 https://blog.csdn.net/ih2w2z3p/article/details/159162249 https://blog.csdn.net/edzkj4hw/article/details/159162251 https://blog.csdn.net/kwphkbu7/article/details/159162252 https://blog.csdn.net/fx5m7tst/article/details/159162253 https://blog.csdn.net/axrq5nhg/article/details/159162259 https://blog.csdn.net/j6gnb5md/article/details/159162260 https://blog.csdn.net/wdccy26u/article/details/159162263 https://blog.csdn.net/qug5hwih/article/details/159162262 https://blog.csdn.net/nfl045t0/article/details/159162265 https://blog.csdn.net/pop5v9k5/article/details/159162268 https://blog.csdn.net/db81eu4b/article/details/159162269 https://blog.csdn.net/js0jcl4a/article/details/159162272 https://blog.csdn.net/rbtdhifs/article/details/159162271 https://blog.csdn.net/wswmo6wb/article/details/159162277 https://blog.csdn.net/bcq5r6g0/article/details/159162274 https://blog.csdn.net/2601_95531655/article/details/159162282 https://blog.csdn.net/g0aa2h7p/article/details/159162285 https://blog.csdn.net/eewbe3pd/article/details/159162298 https://blog.csdn.net/ufmgamnw/article/details/159162297 https://blog.csdn.net/ldclm301/article/details/159162299 https://blog.csdn.net/mc8l6x4p/article/details/159162300 https://blog.csdn.net/k147rmx7/article/details/159162302 https://blog.csdn.net/frgjzjuh/article/details/159162304 https://blog.csdn.net/gnib9u50/article/details/159162305 https://blog.csdn.net/dsltd6nv/article/details/159162307 https://blog.csdn.net/urtatwm6/article/details/159162313 https://blog.csdn.net/izygupyd/article/details/159162312 https://blog.csdn.net/moamqks1/article/details/159162315 https://blog.csdn.net/nsgt2iha/article/details/159162316 https://blog.csdn.net/ef4sc3ar/article/details/159162319 https://blog.csdn.net/2601_95498576/article/details/159162320 https://blog.csdn.net/i3idhvpf/article/details/159162324 https://blog.csdn.net/xoqpdzbl/article/details/159162323 https://blog.csdn.net/da6sx5ow/article/details/159162314 https://blog.csdn.net/2601_95531928/article/details/159162328 https://blog.csdn.net/kk08u35d/article/details/159162329 https://blog.csdn.net/w4roeu0i/article/details/159162330 https://blog.csdn.net/x22g8h7z/article/details/159162331 https://blog.csdn.net/vu7v70l4/article/details/159162332 https://blog.csdn.net/zhnh436x/article/details/159162334 https://blog.csdn.net/cyv207bb/article/details/159162338 https://blog.csdn.net/dhsehlad/article/details/159162335 https://blog.csdn.net/i55xtzjy/article/details/159162337 https://blog.csdn.net/urowjikf/article/details/159162339 https://blog.csdn.net/sllte1qn/article/details/159162343 https://blog.csdn.net/rnyc81ut/article/details/159162345 https://blog.csdn.net/thv1x8a6/article/details/159162344 https://blog.csdn.net/h4j26d49/article/details/159162348 https://blog.csdn.net/jmy2zg6p/article/details/159162347 https://blog.csdn.net/o385fufg/article/details/159162350 https://blog.csdn.net/2601_95511308/article/details/159162351 https://blog.csdn.net/2601_95544416/article/details/159162354 https://blog.csdn.net/xwvnnnr2/article/details/159162355 https://blog.csdn.net/a5yyj01i/article/details/159162357 https://blog.csdn.net/gyi972y2/article/details/159162359 https://blog.csdn.net/enriln3d/article/details/159162374 https://blog.csdn.net/ovg9x3bz/article/details/159162384 https://blog.csdn.net/hdj88ii2/article/details/159162426 https://blog.csdn.net/a4z0oe5s/article/details/159162430 https://blog.csdn.net/x8pj1wbe/article/details/159162432 https://blog.csdn.net/ib9ddmvp/article/details/159162433 https://blog.csdn.net/u9nir1i0/article/details/159162434 https://blog.csdn.net/zh05b4r6/article/details/159162435 https://blog.csdn.net/2601_95544472/article/details/159162440 https://blog.csdn.net/2601_95544433/article/details/159162454 https://blog.csdn.net/q8kx46d2/article/details/159162457 https://blog.csdn.net/wnt7cduo/article/details/159162461 https://blog.csdn.net/2601_95544433/article/details/159162481 https://blog.csdn.net/bh4fl5w7/article/details/159162484 https://blog.csdn.net/2601_95544472/article/details/159162493 https://blog.csdn.net/qy6z3qww/article/details/159162494 https://blog.csdn.net/j5dk6upu/article/details/159162498 https://blog.csdn.net/ryvc1pfv/article/details/159162503 https://blog.csdn.net/amrohw7g/article/details/159162506 https://blog.csdn.net/2601_95543360/article/details/159162509 https://blog.csdn.net/ww5wau8l/article/details/159162510 https://blog.csdn.net/2601_95544436/article/details/159162512 https://blog.csdn.net/2601_95555640/article/details/159162513 https://blog.csdn.net/fuofmqz7/article/details/159162514 https://blog.csdn.net/hlau233v/article/details/159162518 https://blog.csdn.net/jl9knual/article/details/159162521 https://blog.csdn.net/2601_95555644/article/details/159162522 https://blog.csdn.net/yrrtbdrp/article/details/159162528 https://blog.csdn.net/ke5mrd7k/article/details/159162529 https://blog.csdn.net/ydlp7pb7/article/details/159162531 https://blog.csdn.net/zzn4a5yv/article/details/159162532 https://blog.csdn.net/2601_95543353/article/details/159162533 https://blog.csdn.net/2601_95555656/article/details/159162537 https://blog.csdn.net/umoq7yhc/article/details/159162539 https://blog.csdn.net/at64ytnc/article/details/159162541 https://blog.csdn.net/2601_95543573/article/details/159162542 https://blog.csdn.net/sfr2omr2/article/details/159162552 https://blog.csdn.net/puibzysa/article/details/159162548 https://blog.csdn.net/y3inka4h/article/details/159162553 https://blog.csdn.net/a4z0oe5s/article/details/159162555 https://blog.csdn.net/2601_95544499/article/details/159162556 https://blog.csdn.net/2601_95544494/article/details/159162557 https://blog.csdn.net/2601_95543323/article/details/159162558 https://blog.csdn.net/h4mob6uc/article/details/159162560 https://blog.csdn.net/2601_95543609/article/details/159162559 https://blog.csdn.net/ojvkvy2p/article/details/159162563 https://blog.csdn.net/tz3lfscp/article/details/159162566 https://blog.csdn.net/zh05b4r6/article/details/159162568 https://blog.csdn.net/u9nir1i0/article/details/159162574 https://blog.csdn.net/2601_95544484/article/details/159162573 https://blog.csdn.net/weykbt2l/article/details/159162577 https://blog.csdn.net/fdv5ou5g/article/details/159162578 https://blog.csdn.net/2601_95544514/article/details/159162579 https://blog.csdn.net/d7qps3rl/article/details/159162582 https://blog.csdn.net/ormsmr6r/article/details/159162584 https://blog.csdn.net/z2dd9wy8/article/details/159162585 https://blog.csdn.net/g9d767s0/article/details/159162588 https://blog.csdn.net/mhabxzpa/article/details/159162590 https://blog.csdn.net/2601_95543578/article/details/159162591 https://blog.csdn.net/ze8rdr89/article/details/159162592 https://blog.csdn.net/wb2jim2r/article/details/159162593 https://blog.csdn.net/boahb9uo/article/details/159162594 https://blog.csdn.net/zxokrvl1/article/details/159162595 https://blog.csdn.net/m5iawuwx/article/details/159162596 https://blog.csdn.net/dzpe6ywg/article/details/159162598 https://blog.csdn.net/osjvisiz/article/details/159162603 https://blog.csdn.net/qd16nupv/article/details/159162602 https://blog.csdn.net/it7c2w9e/article/details/159162599 https://blog.csdn.net/pcefj4w3/article/details/159162607 https://blog.csdn.net/ea7g7axn/article/details/159162608 https://blog.csdn.net/vhmp5w0f/article/details/159162609 https://blog.csdn.net/qogxjoio/article/details/159162612 https://blog.csdn.net/coy6jv07/article/details/159162615 https://blog.csdn.net/p85xy8r3/article/details/159162621 https://blog.csdn.net/2601_95544435/article/details/159162622 https://blog.csdn.net/nrxrdpzt/article/details/159162623 https://blog.csdn.net/teapcxq6/article/details/159162624 https://blog.csdn.net/wnt7cduo/article/details/159162626 https://blog.csdn.net/bytrm7rq/article/details/159162619 https://blog.csdn.net/dkm7yvb0/article/details/159162628 https://blog.csdn.net/2601_95544520/article/details/159162629 https://blog.csdn.net/c45bjmus/article/details/159162627 https://blog.csdn.net/z2a66yk1/article/details/159162631 https://blog.csdn.net/tp8i2zdw/article/details/159162632 https://blog.csdn.net/2601_95555663/article/details/159162630 https://blog.csdn.net/ib9ddmvp/article/details/159162639 https://blog.csdn.net/w0y5tf0e/article/details/159162638 https://blog.csdn.net/dvtzo7c2/article/details/159162637 https://blog.csdn.net/tx6lc2up/article/details/159162640 https://blog.csdn.net/x8pj1wbe/article/details/159162644 https://blog.csdn.net/2601_95543531/article/details/159162647 https://blog.csdn.net/rqspk28k/article/details/159162648 https://blog.csdn.net/vj741tg9/article/details/159162649 https://blog.csdn.net/hdj88ii2/article/details/159162654 https://blog.csdn.net/gw482hxg/article/details/159162655