前言
红黑树是算法领域中一个著名的二叉查找树实现,它能够以较小的开销保持二叉查找树的平衡。具备平衡性质的二叉查找树能够极大地提高节点的查询速度。举个形象一点的例子:从一个十亿节点的红黑树中查找一个节点,所需要的查询次数不到 30,这不禁让人感叹算法的魅力。红黑树是工程中最常见的二叉查找树的实现,例如在 Linux 的内存管理和进程管理中就用到了红黑树;Java 语言的集合包、C++语言的标准模板库中均提供了红黑树的实现类。
红黑树本身的设计很复杂,多数情况下我们也不需要自己去实现红黑树,但研究红黑树还是有意义的。一方面可以让学习者领略这种神奇的数据结构的奥妙,另一方面可以作为一种思维训练工具,提升自己的算法设计能力。
本文以漫画形式讲述红黑树,第一话讲解二叉查找树的概念和基本操作,包括节点查找、插入、删除;第二话讲解二叉查找树的缺点和红黑树的概念,以及红黑树的节点旋转操作;第三话讲解红黑树的节点插入操作;第四话讲解红黑树的节点删除操作;第五话和彩蛋部分讲解红黑树在插入修正和删除修正时,对各种 CASE 所进行的调整操作背后的思想。
红黑树的实现中,最难的部分在于实现节点的插入和删除时,要穷举所有可能的 CASE,然后对每种 CASE 进行处理。在理解节点的插入和删除的过程时,读者要把握住一个中心:每种 CASE 所进行的调整步骤都在尽量恢复插入/删除节点后所违反的红黑树特性,如果当前 CASE 解决不了,就转成另一种更接近问题解决状态的 CASE。每种 CASE 的所进行的调整步骤都是为了向解决问题的出口更靠近一步,直至找到出口。
漫画采用大量的图示来展示红黑树操作的诸多细节,作者力求详尽,因此篇幅略长。在 PDF 中给出了完整的二叉查找树定义 + 测试代码,以及红黑树定义 + 测试代码。两份代码均经过了若干次十万数量级随机节点插入和删除测试,结果均无误。读者可贴到自己的 IDE 中,结合本文讲解进行调试研究。
在电脑端本文阅读效果更佳。
正文
![](https://i-blog.csdnimg.cn/blog_migrate/d1c4ec14a95c1554816486e4d931719f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9486f836e675fe7c9bcbba6eb91e6e01.png)
![](https://i-blog.csdnimg.cn/blog_migrate/311a0b58a13cef9ecce47a39d7f06330.png)
![](https://i-blog.csdnimg.cn/blog_migrate/08c79a5eb12a4cc967049c15d6987fdc.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/ab5731f4e2f341f6e6aa35f5d301db21.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56a5cfcb185e1e7fc2f2ff422895c5b3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6eb85134d7b37ef25696f21f39018128.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cc31f6af1ed76979dae12c45d7d257b2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04aea74e8f48537a5a70580aee702d38.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8a2ea287da8b813ec3db8803f10932b7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d3cd74b29c628741c76887f75f4a677b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15ca21130d9a89c1b7aec892eb8b020c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/940f06460536b793749b012cb48c4f9d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/801850b20b4559467346b3d52eb4c343.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d08badb014489c70973418963e41e633.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2424d2b796dec626fe2625d19d2a3464.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ded0115fe4b8c0eec8c4d0b241d51a4d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5493a39a62cc1ca1e07719d2f411ac79.png)
![](https://i-blog.csdnimg.cn/blog_migrate/853d6fe1dcd90ff4cdb7e8a0e67ad8b8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/eea28a1144b05ed33314e29aafdfc564.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e844b60631f0f4aba9f07ad88fb5150e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/813f131fba9386d315549dcf1d6602ca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f05b508207e72c37e508d08dc96940b9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bc1ad37fe60147fcbeb123c50bb952ef.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a7080e4332ca0abccfc84db41523493e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6b4e1d39e4598d35bb43ef0bf2ff0676.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1036762f71f6e886a73cd096b8bd9e6c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ede2a9c7dd4b05a25d9ffaecbc3535ca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/39c0437fb5322e2942d358d327bd2a91.png)
![](https://i-blog.csdnimg.cn/blog_migrate/48b7ce9f5d70983479d2ccc2fdd2f36e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3508e35ce1b9ae7f1ecff35db5e38fa1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/32b56a5dc56aaa7528f67fd55f11a688.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f00a76f7ac88c84860b3bf3781f89ff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/64003693ed48611d27fbb36ef67bd8df.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e4aab8e84934b8e25abb84f0355a6278.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0ee62a43c566da538775e2dc7eacc01c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e7fb8d0553df9c4ed4dd01b4bfbce2d3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9e22673c9b4f120054c3a161d8067f8b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c5f326f018c848d17233323c25e66cd7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5945b15d837797b07e8fa9cd5277813f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/42c850d37a683c8efd29be594c39e259.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0645a76faecec94f4425d0ee253d8535.png)
![](https://i-blog.csdnimg.cn/blog_migrate/601aac48342583a34cc32b03d3c56fec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/77444bcd3e716cb8f2b193b7872c7160.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6ba3310e3b4e1b97e828ea25789eb0c8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/48523c1e0c619202c7ceb6a9d9c9b421.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6d5ce56fa7eef23633dd821d8056a372.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9529955d47f02e8552bbaff04a66efbf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e94b4868a3a10cb37ccaeb28b020e3a7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7df1c6b5e09d01b2d19beaac1e4ae8d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62996789b6f288e4b3b6dd71f69bfdb0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/476d68fd3aa0e955b1b72896ef56035f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/444e80bc6cb44b8599bc7522d95683b1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/adb93d72b4ac21163d3b2f01a307274a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e81bdb9d1d9ce248a291754acb2f1bb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dfe24b505187c5cd8ef24e544beb6900.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a687476835b676eaca3b62bc891e4957.png)
![](https://i-blog.csdnimg.cn/blog_migrate/874010a60acf7e1275a76036dddb4dd9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d94746951239a2b1482f3343e0e96ee1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e50b8a6227f3cf54a8a17fe3e675c774.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d512244e23592d72d7fdaada2624328a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2d650e0698ca434e0d374a285a318a7a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f2b7752518e285c0a197b470a529fa6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37f9d583affe948d7f81ed5df8b6a716.png)
![](https://i-blog.csdnimg.cn/blog_migrate/70ea0e61d749c91907e5670be7cf610f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5e263efb5f73a9d9edd37d6c486b4b2e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ff3f25cf25ada534366a473266baa1ba.png)
![](https://i-blog.csdnimg.cn/blog_migrate/546bb063822c3333cfd38457ca6b008c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f55b5c41d0aaf95b122a66aed42b426f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04d8fe6cfb878f305b2907da0e1c9395.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5d85db9aa92aa7ac91613754a3e5459e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/eaca19999097258dea2025c706f43998.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8fdd9068dafe0b0f1aa4fb58d0abb3b3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b85c685b05fc3294f0c0760e4cafbd5d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8b8ce47f04a7c043b1be4a61b5487e63.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62f4fb00f63d5821a2568b8e9947eb9d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a7a3b6a8ee7d415a22e233b8fea4d9ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d44bf606e4658a3d40f8d2afa072c7b6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04ba9c8149b3babdb8a0ac2a6f5850e8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cd5ebc3b8898dea0b21320efac749134.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec299ca8a1d5d87c04b8a8cead72a566.png)
![](https://i-blog.csdnimg.cn/blog_migrate/36c48181046cfcd5b32ed32542033b6b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c0b8f77d33ba09d880369d709c660950.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0902f4f6d5e6af8545b5dea27a9017bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e436ddb90dcc3ab8a33d5bd8fbc03c82.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f9e5842b6dc48a83ec499e742ecbb990.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fc3b1dad5c01ed7ea2495ac298d0753a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/34bf9b47fcf1811622666820b9d4b670.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f5a2d42687b5f66733814058abbd1fcc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d638836dd8a18169a4320f4053dd63de.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c5ad672d72aa511946cdde2ca6467f45.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c26d460e4794926ad2c49de3142a6f82.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6fc48ca9df6870fa6f9d4d68be798290.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f2eadb8d4f4f7c967b93ed84a854b4bb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a53e6e10e071ecc208cbd5e68be5aa76.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e176864f3c92f01d045a0e69ae2e62e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec63a3ce278b144470cc6a5f1e568480.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f87bf094b6aac2ad2182b3ed3f5cbd3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e883aae63bf4e49f35a3593c59fcdd55.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56b7fde445977359022379e2c395044f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9e619fcb852fa8f0fcc12b13cf00cd4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9d55df46166153738bc5bb55fde34f00.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a595ba5e97ecb76d665dac53fd6aee06.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2372e0b73cf423f1b3735f62f7f7fa06.png)
![](https://i-blog.csdnimg.cn/blog_migrate/10677e3db8436898176572e462b39e1d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8be7b3cc83b69a1d88956c674d1d7a30.png)
![](https://i-blog.csdnimg.cn/blog_migrate/176e447cb75b87cfe207f416324997cf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1a684f47d565b0414418d9158f04e791.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d447548d126b80b928d0bf7de922b239.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e719c883f60821ea075fb90544381ef5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8c4f5c004f97391b508f878f749352b0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/41340ae7393ddb1a857c026fcd712ad4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4252e731d62af513d37182ebb00ff8ea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec53052dfa2e55bc9e25e8b82358e24b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00c0c22bd0b2bf535c7b00e11bd7fe9f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2875f16ff57f23af88d2b79b9419988b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7068f6da99cd81d474978950789945c6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a620ee59601c2ab268e58582e9bd62c4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c29767cdafb994b03e34dd8f19b624c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/49d11c57926f797834e3b5083e84c8ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7f4092bb32eabdfb376f79c5fb58767c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd54c8145af661b305dc516abca6ccc8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d16e57711c5d15b249e2325bec9b6eef.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ca32feed2c1c69863e2571c2caa8c9d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/810569c0d8347bf5c2d92176d2557e0e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/29bab64687db0aa7213d44fa846cc1af.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f0ae7ae54a8a6b215fcbcdfc7c1c7bb9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e10fd6b549a570a1bcc30e257289f610.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9f56a3f5a86f1a72c95fae55e3a0a48.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0686af82282215486270484b447bdcb1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/871c63ddd670830c2923e582a07e1109.png)
![](https://i-blog.csdnimg.cn/blog_migrate/364526208a0e09dc830aa6d54beac38c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ebb8e69ecd0042a6b9ffc47c917a799c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/072cd513d5a8373a0fcee803db76d7ea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/67f193715cfebd68a7936b43970e31fe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7f44a0add9399a47eed1632287d5cd0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f888e34c383d8472718dbf6765b83d0a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dad54bb8f637695b60ec1e139b1f9261.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e88fecf8b3a922db16ffdf5cad56453b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0ea22813a652dbd16857d00f69fb80f6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f8f013da76c021cac6322268b113a7b0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/225c8c8a54f7ce6a49b95de2b840b6c6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ba8fea9b410ca45f9364f4056848bf7e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/751b68c88eb13961e49fe164ef020ede.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fd8aa74f1cd1e9beebea5b8288c6d3f7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7a1f0a71ae83368771effd7644293944.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8fab690e2dcc6696aa3643024e258282.png)
![](https://i-blog.csdnimg.cn/blog_migrate/05e903cb7c6a0035f62da2b919de9e1d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/77c8f705f083230ab086c3553376da80.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8c3de01b6c4bb3c3542153b6695efd14.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5fe32343f5b8029b3e38bf3f5bbaf9f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a346df59b6fada1a1cd88e6943f3ccb6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/03455289e3b4ae774bf467246de0d9b5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/829b4161d33fa2d4d5dbc9cc3410b53b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/862eb1b3f052cbf3d21d25f9f8155e89.png)
![](https://i-blog.csdnimg.cn/blog_migrate/077847431879dde754174e525226afaa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9eaea36f80e66b2492d92d9c39f8464.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c25f2f8bffcb88cb5ec86851d54acad0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8a46bda4d4c53eafb5fcd1114b6f2125.png)
![](https://i-blog.csdnimg.cn/blog_migrate/435cf5da0bc03beb80cd6398b0b226ef.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1bffbe4b7f79b819b74e5eea6e285980.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7ffc4c3e6bdfa0185101a97c59f4da67.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f729b77b6d987138b643fb2fe864340.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fc39c1c31cb42d38f0cbadaa5cedbc8d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7ccc644ce4e218ed3fb2c53286682060.png)
![](https://i-blog.csdnimg.cn/blog_migrate/176cf6bdb3379ccf0f66331b410aaa6a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/af28130a4899f41a7461e8cfe379bc65.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1a25b4441e3e58699fc52a07ddbd443a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a2d73a4dda101e1acf23a728984a727f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/654fbf6ae7c8efb0f727d81316ddf54a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8eab688c8282f1156464f98bd1c288d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3dbdf6d6d2689fccad4e65e858f076c8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f01a68253af954793bdf98e8f2edff89.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a747e4eff73b7a9771fbf981d7291d8a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ff03fa8640a97c61896e947e5045c0bc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d1477852d7f4ef5cf14634069cc1dc18.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ed65a1232b59dacb63d77bbdc313896a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b89ef6e923d1247af41b209b99b9d025.png)
![](https://i-blog.csdnimg.cn/blog_migrate/75f4cc722a18f332ead66844b776418f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2781e85e627231b7fd55f65b79877e76.png)
![](https://i-blog.csdnimg.cn/blog_migrate/af2370a5c7415295f72b72ee4332d9b2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/998eeb5b73603450efca5698c4dd8cf8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6fa22eb79c1522e86fb47285d4ed7597.png)
![](https://i-blog.csdnimg.cn/blog_migrate/af8908356e7b310a364b21d4a4a9281c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3a82b52b4d6b2359edf8e56fd29030d0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/98c0a51d4399fe1d12be35067bef5294.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fec51a9e96ddef11cd686744c1e619f4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/443fa325a3a40e9190b78ce2474a3df7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b0bf5608a4356a702e193def0310746f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/53e74829f3526ee9ba9de1c407198d34.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a813af395c1539270f652050062969c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1435c16f0dc543e82f23720291b4507a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b9754517d7823f51a0f9447828d4f716.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4eb3466dcbd21afb937db7012fdaf550.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e9169eb3cc2ecb0d1bd10b60c546d7b7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74325bf89cd032f425c76d73f2693011.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2dd8a59e20d4d7f0236ee3e35b9dbc71.png)
![](https://i-blog.csdnimg.cn/blog_migrate/42e482f7b647949affb384028d096161.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1c2a28d61899609a145773d09a9b746a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6c62bbb5526975bbf2078490b803c06d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4a5d9f1b85bd6b0505886621571319f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aa0098f05f60d0d802824efc77b858eb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c8b7d4f33e72eb709c80bfa26e12254f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5b05eb9cb6855f5e579238253940ca82.png)
![](https://i-blog.csdnimg.cn/blog_migrate/09f052505a6ae7ae5a93200c504d7c8b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae3df8a5686dd75bc65a42fda542ce96.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9c27e4801bd61105e4da46d19608e75.png)
![](https://i-blog.csdnimg.cn/blog_migrate/480cb2d21491219f690c191ec957c82b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f6c4aba8c2e325196c7a01544fc5591.png)
![](https://i-blog.csdnimg.cn/blog_migrate/978cb6cbc89f3436c959b06d6348cee6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5548eedf053fd6fc6bd353e0d32d164b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7eb2ce7047188d0642a60b7a8c83c60f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/19ee5cc77549c23b2e6801b85fa9a08e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2b1e63c929219d159c71212a7b051bf3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ebd5a3c153ccd243effd5fd5fd860443.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0c80800ed68f2d186fd4e657f282f027.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0f350b53fa52712174c6a068a35b86a7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3c6c2980129c9c30568c074ffe59c770.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aeac9cf60962c3ba7bb8a4797edb4dd4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7b9f4bf041e0149cc4ede0030968a812.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0dba2c72afa452b17ad16fc5b280638a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/25aed1232e968ad8b99856199a5d48ad.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4bac7d621dc5a0b2d987deec35e7b8ff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9b1b494270f796fafc3b467321c643eb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b83d48abc1bffe5274680178f928c4b7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5bf656248fd14a54784dfd4ea998e0ca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fe6498538a1c6a2bad91d380378cdcc6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7ac41d9395c8b594da4efbd93c1aea44.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f088cd40753fb6aedc64e9fdc5e3419.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2bade013147321577e2670b73792d27d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/980314fbf1212690f481c9d49e837cf2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c52f00598165be3975c62b9e1aa53047.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bac7a84af7a51699653f5ebe5679c697.png)
![](https://i-blog.csdnimg.cn/blog_migrate/793529c922ba54b63e66b2039c328b25.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d0b2a35b81545c2cf4d87e111be64d00.png)
![](https://i-blog.csdnimg.cn/blog_migrate/61f29e696ddbb932282b7bbd96554dcf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c7e591e6d1817c9e58f2d0d6ccde7b4c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e5ca3c746347febf73b5c8ea1a5e39a2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2b833ef820ae248e57513e01b7ac3767.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bf2a6720664c393895545038ebdee37f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b44aec5648c60076516bcfe66df063b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1469fac66f66b32baaad9c9e347c90fa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a03c773db495b34fc8713ec53bbdbf8c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/51b718e742c155d00fb128d72ed8991d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/49a1fa2941664f813fdaf2b6e7816e8f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/126c0ace16ecc5145981547e6f41d8b6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5890e6b4a0d44d8f9787037e57a540dc.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a08baf93119c643f24b91b46c36e8d7c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9294103e39ca7cc8fb2b2999cd3c3e8e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/125acb7373e1948ae0e28491fae3eb9e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f21473641b3e407cdf3c32a3c6c90c2b.png)
重磅!程序员交流群已成立公众号运营至今,离不开小伙伴们的支持。为了给小伙伴们提供一个互相交流的平台,特地开通了程序员交流群群里有不少技术大神,不时会分享一些技术要点,更有一些资源收藏爱好者不时分享一些优质的学习资料。(群完全免费,不广告不卖课!)需要进群的朋友,可长按扫描下方二维码。▲长按扫码