关键词:M阶、B树、分裂、合并
前言:
1、B树定义:
对于B树,我们一般描述成M(M>2)阶B树(这里的M阶指的是树的所有结点中的子树个数的最大值)。对于B树来说,它必须满足如下的性质:
性质:
(1)节点的性质:
-
- 所有的叶子节点都在同一层;
- 每个节点由若干个指针和记录组成。其中,每个节点中记录的个数比指针的个数少1个,指针将记录一一隔开。
(2)指针的性质:
-
- 每一个指针指向一个子节点;
- 每个节点最多有M个指针;
- 非叶子节点的根结点最少有两个分支;
- 叶子节点最少包含一个记录和两个空指针,叶节点的指针均为NULL;
- 非根非叶结点至少有ceil(M/2)个分支;(ceil(M/2)>=3)(分析:当这个值等于2,那么就变成二叉树;当这个值等于1,那么就变成链表。所以这个值必须大于等于3)
- 对于任意一个节点:ceil(M/2) <= d <= m。 (从上一点可以推导出来)(d:表示每个节点的度)
(3)记录的性质:
- 每个记录由[key, data]组成,同时每个记录按key的大小从坐到右非递减排列;
- 对于节点中任何一个记录,其左边的指针指向的子节点上的所有记录的key值都小于当前记录的,右边指针的都大于当前记录的;
- 对于任意一个节点:ceil(M/2)-1 <= k_count <= m-1。(k_count:表示每个节点的记录个数)
一棵B树如下:
![技术图片](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcoAAABzCAYAAAAYLkLVAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACI4SURBVHhe7V0PjFbVlSema9w2sW6zZk2T3diiGzdmN2brrhCzW2MTdQMa7LZqW1SsNdHYImZpYqoV7XaK4MggM8o4TsuoyCgKw2AR+aPT0TqwIAEmIHwGZABBWFEgEqVbk7vf782cb+735r3v/bn3vnvfe+clL9/Me/fdP7973vndc+65940TfDiPwM59fWLxup87d7b1TBXtr9zuXL10YfXMa/eKeS/9p1i0erpTbUR95r38ffHc2v9yql66cEc+T/beJp5Ycatz7Xt82U3iqZV3OFcvXdhD5lte/p54Zs29zrXxlQ3N1nT1OGslc8GxEcBLMKd7snOCO6d7kpjzwuQqkfyskGfr8qmiafFVon2lW4OBthU3e/V66pWfFBJ3yNPs5/9DPLb0u87JPHAvssy3VAdgaGPnqrucwp5kPrbS1JyQiVIzoCayA1FCUFw7FvT8ULSumCo+Ovl+Ic83tnZ6SmP73jVOQf/m9me9eu0YWldI3CFPzS9O8RS1awdwL7LML3vzIU+2ho5sdwp6knlblWKitIV8gnKZKO0QMROlHdyZKO3hzkQZrJiZKBMQlq2kZSPKjVteF/c/OFNcNvFS79dvsU669mrvHp0/uuUGI5ZV2YgSuMu44u9Hmh+uwxZpgP83x5/vnf77urwLZbIoIb9+3PH/3dPv8LD3yzulfa67Q7vcM1EyUdriOeVyy0aUUMBQHvgNIkpcX9+/snZCeetS0HI+ZSNKYAolLGM7dHhHDdsdlY1jyNEU9mUiSmAoY46/IeNPdszzsPffA0HiPvpDt9wzUTJRKhOWrQzKRpT08odZlFASuhVEUH5lJcowbGHZmLLe/WWWiSj9bV+xaolHhGH9gMEj+sLEO8BEyURpi+eUy2WirJ+zYaI0E8xDFmWYAiZLHvdNWZJUdpmJEoMRcrsG9QX6AWTKRKmsWmNnwHOUsaGyl5CJcixR0hwZRtYmXFBQQmW0KAlX/MrKmtyBmJOkNOSmNaGwy0qU5N4Ok2m4Y00OFNmiZIvSHtMplsxEGRwFKAefmFDWZSNKGUOaByNXK4hy3Lhxda5XCkIxgX1ZiTLKrYqBYdC8va4+YKJkolSkK3uPM1GGh8vTCNyEK7DMRAnFK1svZFHKlg5d06Wk5XzKSpSN3Kok6ybwpjyZKJko7TGdYslMlI3XlUG5MFHqX3vnDyrx48xEqRfzKLcqLHjTwVRMlEyUinRl73EmylGF5CdEk+6/slmUcoAIloVgDlJWzP6oV9wzFX1ZRosyyq1qMoiHLcrG+p2DeezxX+ySy0aUckAJ/U3zMhRMAiWOe1AuJqzJMgbz0EYChG2Q9UL3CHtTbsCyESVkuNHaSMg9sDeFNxMlE2VsQnI1YdmIMo4ygNvPVLQrlV82ixLtBqbAtlEfII1p7MtGlHFkPos07Hpl16urPBhZLyZKvXNBcRVOGYkyLjam0zFR2pF5JkomykhCcjUBE6UdpcFEaQd3kDATpR3smSiZKF3lwch6MVHaURpMlHZwZ6K0hzsTJRNlJCG5moCJ0o7iYKK0gzsTpT3cmSiZKF3lwch6gSjxMVXVc8bcy8Xf/9Nfi3/+968r54W6tMxpFgt+sazY5y9fELM7f6CM10/uv1Sc+/WviJkt/6ac1yPtt4sF1XoVHfvHHv21MlaQ03/9zt+Kq268UEtej//mycLjvmDWEjH7tzco43XnQ5d5+ua+J76tnBfpvkhlaSgBLw8xBKzObPcc2ux97T3t2dEzXVzz3W95W5D9xZlfElPvujJ1XnId2n61RDzd9HuxtL2vkOfi+es8pfj0M7OV8Fq06l5x7t98VXz1a18R6Iu0/UjPtbfP8+rV3fp6IXGHPLU/3Cva5jytjBUw+9blF3pyj35Qxd6ThwLL/DPNr3my9bulDyljdX/zTZ7O0aVv1r2zUKdaTZQXE2UiuPKXeOHCheK8887zBPaaa64R+/bt09aIrkdXi1eXbBQnPzlVyPO97Qc8pfHuliElzO68804P/56eHqV86OGN69/16nVo30eFxB3yBLJc3vmmFry6u7s9/PGregD3Isv8ljcrnmx98P7/qkLlPQ/dM2HCBC152cyEidIm+gbL3rBhgyegUBAXXXSRWL16tfbSdBPlqpWrRfPcec4ofx1E2dfX5/XBtGnTtOFvgigffGCWOHzwqDPY6yTKzz//XJx11lneQFH10E2Ursm8bqK87777PPnXOUBX7cM0zzNRpkHN4Wc+/PBDTylDOM855xwxe/ZsAUVh4tBNlFDWEydMdEZZqxLl8ePHvRE1Tvyt6zBBlOPHjxf9b7zlDPY6iRK4450AWar2g26idE3mdRMlBuzQRbNmzdIl/lbyYaK0AruZQkGKIEcI5k033SRAmiYP20QJUjWp3FWJkgYsuq1520R5y9RbBRS8SZe7bqJEH+C9wFSEymGTKLds3iYwoDGJu26iBNbwaOHM88FEmefeG6k7lAAEEYrgkksuERjFZXHoIkoiu7DRNe5Xdu0ZoyDCrCAoFJyqCkWFKDEfif7A/KTuQxdRAiPCNQhL3AsaiGCAEkaUugYuuokSXhVY9ldccYVSd+giyjQyj2fCiFKXzJsgSliTeBey0ktKHRzyMBOlCVQzyhN+/ylTptTcrKqj5aTVViXK6T+9x3vxoXjxC0tFdr0G3Qf5kcLAy4fnSHl0P/9iXX6qbty0RAlLHkr5/PPPN+L2ViVK4EeY4xe4y0QJgsR1SoN7NPDA3zLupPCvnXxdHfYd7Z1KAxXdRAnZpqAqFU+LKlGmlXkMTGTsgTfeBd0yb4Iod+3a5ckM5ivzejBR5rDnMDrGKA1zLhDAGTNmKM+9pIFBhSihSP3KmUiTLEEoAfobQQ+4L1uWfisIaeg+AlNwX0VhpyVKuL3RLwjkMXGoEiWRI2EL5Y36EukBO2BJ96GUQab0f5BFKeNMSl3FojdBlBRYhSmKtIcKUarKfJBFqVvmTRAlsEZgIQaPeT2YKHPWc3Dp0XIPuJG2bt1qrQUqRAllCwUtK1P8H2QFQkEgGtZPjGGuV6QnpaQyl5aGKGkpgsnRswpRhrnvgrCEFQlFDKKU+yXM9UquWrKaXCNKvCiw8lWWK6gQparMN3K96pJ5U0SJwYnJwaNpJchEaRphTfnDfQFihLCBKHWsCVOtmipR+knMP0dJrlhSMFFESZaMnD5LooRLD8FUmC82FWmMPjNNlGS9k+UZRZSyqxZpXSZKWq6A9ynNoUqUKjIfRJS6Zd4UUeLd0L1MKk3/pX2GiTItchk9h3B2uFYhZHC14kU3qYSTNEuVKP0WpTxHScpaXtsXRZS4L7sMGwWdxLF2klqUWKeXRdCCbqIE0cnY+nHzD2D899GPNGcmzyHHwTgsjQnXK2QbHhiV5QqqRKki80FEqVvmTRElsMdAHwNJV/RXEl3HRJkErYzTmtxVR0dTVIiSRsI0p0hKgFx85DolooTrVZ5Hg4KFkqB5TFL2RJSUX1YW5aJFi5QUcJL+UCFKwk1W2BigyNgCV8IN+FNgjzxH6X9eJkoKDnKRKIGzynIFFaJUlXmSaXonTMi8SaKEPtO5Q1WSd0Y1LROlKoIGns9iVx0d1VYhSihROVKS3KWywpUjM8mdJy8/oGsU9UoKGs+RuzALokT0Max9LM3JYrSsSpQ0CKGIYf/8L90nggSucr9QpCVZobS+j4KxXHa9Qu5VliuoEKUOmad3gvpDt8ybJEp4x/CeINgtbwcTpUM9luWuOjqarUqUUBwYFQetkSRrJGo9pP/ZqPySWDlxXa9wKUEBZBVYpUqUhEHUmsek2EfllwR7U65XyD0GNmmXK6gSpQ6Z9/eLTpk3SZTAHtMTOnZI0qG/kuTBRJkELYNps95VR0dTdBBlEuWZddo4REnuJJUlB0n7QhdRZo1nkvJMEiXwTrtcQQdRJsEh67SmiZKiwjFVkaeDidJyb9naVUdHs8tOlIicxOhYZblBmn5gokyDWv0zLS0tqZYrMFGqYa9zg3q1miR7mokyGV7aUsPNanNXHR0NKTtRgiBBlGmXGqTtAybKtMiNPkfLFZJuMchEqY49bcihskOSei2S5cBEmQwv5dQYUcFNZ3tXHeWGVDMoM1HSAmpYJlkfTJR6EE+zXIGJUh172qDexruTtvZMlGmRS/Gc7GaFNZJV8EeKqsZ6BEQJxVH00//hZvQbBjqqG2zHAjkg0eY/7C485pApXR9uDsOZlvQk+bpL0WWd2qfrw81B2MNYwHrKrKcs0r5veI6JUgW9mM/KblbsqpO3ieywZu7decjbJabo5+nP/68GAV5yLAMBUdr6GC3qU3TM0b6hypGYb1i6ZGmWK2DQVHTsMRD74s9fpAM15lO0Qb2tdyhmNWvJmCiTIpYgfZHcrAmaXeiktAavKIOdQndWjMYhTgCDnizWv8aoTmmS0Ab1efmgMxOlIdEsmpvVEEy5yhYbQUCpYi0YH8VAgJYruLB3cjEQjd8KeNfy8kFnJsr4/RorZVHdrLEaX+BEsDjwUmNuJU/RegXuEi1Ny+tyBS2Nt5wJbVCfhw86M1FqEhZ2s2oC0tFs6KVml6ujHaRQrWnTpuVytxiFJjvxKAgy7Q5JWTeAiVID4uxm1QCiw1nQC53HPSodhtWZqtFyBR4EZd8l+D4oTtcPJkqFHmI3qwJ4OXmUXK6YT2GXa046LWE1abkCzz0nBE5D8ry4X5koU3Q2u1lTgJbTR9jlmtOOS1htdr8mBExT8ry4X5koE3Y4u1kTApbj5LSxAFsaOe7EmFXP62bdMZvndLI8uF+ZKGOKELtZYwJVkGTyxgLsci1IpzZoBkW/Yl0lH9kiQF6brPdMTtJKJsoItNjNmkScipOW9nLFZ7T4KAcCCNbizQey7+s8bD7ARNlALtjNmv1L40KJ9PksW3u5uoBBGevAmw/Y63XXNx9gogyQDXaz2nthXCjZ1uezXGh7metA7ldeBpS9FLi+9ysTpSQT7GbN/gVxrUS4WrEIGq5XPsqHAAK32P2afb+T+9XV946JckQm2M2a/cvhWon4kgGUJL4Owkc5EaBPb/X09JQTAIuthvvV1U9vlZ4o2c1q8c1wrGiyJvL+nVDHYM1VdejTW1hXyUe2CABzeHNc/PRWqYkSZj42uUbnwEeOl4SPciJAlkRePvtTzl7KptUYMEEv8Ke3ssGbSqGtBF2MNC8lUWI3CLjXQJD4zcPu9dmKbLlKg1cBihFfB2HlWK6+D2otDZqguPnIDgHaStDFaPNSESUsRoqugmJsaWnJTgq4JGcRQJQjBk08YHK2izKtGAZOkAd2v2YKu1cYuV9d2+SjNESJUSImi/ECQDG61hHZiySXCAQQtAGZmDFjBgPCCNQQgFUDfcFHtgi4+iWXwhMlFo8jkgrKEK41dqdkK/gulwYPA5Qh9ppkl6vLPZV93WiZEJYt8JEdAq5+SLuwRAnAaQ9BhPwjSIOVYXYCn4eSyM3DyjAPvZVtHcn9iqkaPrJFgLYSdCm4spBECauR3KyIYHN5s91sRZBLIwRogTPPQ7FMhCHA7lc7suHil1wKRZRYfwNihJsVRMmLhu0IuuulwrMAdytkxKVRq+u4la1+tDE+B3ll2/MubiVYCKL0bz0HlysrwGyFO0+lIXAHgykeSOWp17KvKwbekBPoEz6yRcC1L7nknijhQkOQDgQaQTu8q0q2Ap230uiL6rzxdd56zk59oVPgfeAjWwRoLSvcsC4cuSVKTLZTMAbWRLq4m4MLHVzmOviXAMHzgEEVXK68PKjMkhG/7WHuV5af+BimSRm2lSCu2wjKzCVRghRp6zmQJQttGlEs/jPYdUl+qRD5DM8DRqt8MAJxEAhyv8IV6+pXLuK0KS9p/FsJwlto64MFzhFlo3kjuM3kNZE8yZ4Xkc++nhh50uYSIEu8ZFgmhJePD0YgCQLwQuDEAIu2vuT57SQIpktL7teOjg5vRzWbX/ZxiiihzII2I4bSowAMgMWjuXSCV6ansCQIRElz1xdffLH3orH3oUxSkK6tIEF4H+i84IILarJEMsVLztJh2+gp6HkZ99tuu02cccYZddjbii1wiiixbgmCKC8Ax2SuvCaSFZ1+AS1ijrROkhQbfidNmsTR0EXsbM1tgsImy1GWH/obAy4+zCBAOyIF4W7zg+rOECWZ2QBjypQp3iYB8ppI3nrOjGAWNVdZnuSXDh4LzGvjheRBV1F7X71dIEuKpvcrbVvzZOqtykcOFEsQRJa2eMAJoqQ9N2VgzjzzTM9VholzG1FO+RAprmUYAhStGPSy8ZdjWG7iIIBAHiwN8cuQLfdfnDoXJU0YWdoa3DpBlPTpK1kgzz77bLFt27ai9Du3I2MEaJ9fv5LjKOmMOyLnxQWRJcdIZNOptPyP3mEMcG0d1okSATxh/mjekNiWWOS/XP9LBjcab36e/3610QIKMiQ9xRGv2fWC/B5jxYOtwzpRNpo0p4+nsuvVlnjkt1wKDKMoaZah/PalCzWXyZIjXrPtEYpVsWk4eUR57OQBMXRku/eL48gne7z/cZ44dcS79sFH79auff6nT8Wfv/hT7X+kw/HpZ5/UriE9DjxPefnzX9Dx3+Kvzv1Lz6L8xj98rXae9eUviSu/c4W4/gdXitvv/p5Y/PITqfKX6091QNsaHYQFpXfld+fQH+rwdqVeuuqx9/A7Ytf+P2pr4/gLviG+feXlYvPg60p5ok7vHdyolIcujEzls3Ooz8n2kb4Ie19JT1E6WUdBF+GQMYPOgu6Sr/n1FukHWQ9Q/q/1LRX/+C9/5z2fJH9ZBwblH6Rj/flHYZEldckYhun9IPxkXgnCL4xXjh3/UNx46zWiue2XHg/JnBXGW0nyl3krqH8gN+NQUOequ0TT4qvEKxuavUosXvdz73+cb25/1rvWtuLm2jUiIEqDXxzb966ppUF6HHie0gXlv/iVXwvMA8h56cyf6i/nHyZ06Kg53ZPr6iI/x38Py4SZ82qt+d750GX68nveVJs53yhZIoXnJwLoCNJJpFdkHQVdhEPOnwirkd6C7sOBPP16K23+sg4Myj9Ix/rrD70E/WT7QB1kbML0fhB+Mq8E9U8SvW8q/6D+eXvHC2IcdeLOfX2ZW5RBFh+u6bJYG+UfJHB4kWjAYGr0nibfvq2/9erV88ffiO3vv1bIc/6yG8X8l7/vnGWDOs194bpCYg5ZgkxBtiBjaWTT1DOkCMna8r+vQXrLtEWZNn8dFiVwhmVj+/DryCwsyiBPpU6LNcqiRJtrRBkmkLY7JsvySQhohJdl2Y3KIkv9ja2d4qOT7xfybF0xVSzo+aErkNfqgTo1vzilkJhDliBTIEoa4bvSAUSEUUTJeivbHnNVR5pGYRxeEJibYS4O0xXIMn8iHJpT9ZftqhCYJMqNW14X9z840ztXrFoSSAiPND/s3UdaU0RdZqJc378yENsnO+Z5uOPXFO55Jcoy6a2oQUOWOhQ8Ab5wbWBlCgOafrQe9WqqgUH5MlHWW6MgwG+OP1/cPf0O8aNbbvD+lpXyjspG7xruIQ2Crp7r7jCitMtKlMATGF828dI6XPE/TuCO30nXXm0E97wSZZZ6w3ZZLhGlbSyyLr9GlGUamTFR1hOl30IESUJpk/UCgsRJ/8O68St0XZZOGYly6PCO2kBExtXfD5QuzOJX6YO8EmWZ9JZLRFlai9KlTjA9WqBJ27DosTK6XmUlCxegTJT4W1bOZGHiV0U5Bz1bRqLEIITc3jJRBg1IcB/XdeOeV6Isk96iYCCXgnlci+MwxR0UEFqqYB4mysaBQFDEsosPROm3OnENhKpbYZeNKOFyJXL0E2MYUZqw5pkoTalYffkyUerDMmlONaLEHxgduLBGJ2kjkqZn12s4UZI1ScToty6JGJko1aOOyZVKWPuJEdeBM66jH/AbNI+pY7CSV6Isk95yyXoGT6A+YQGRSXWy6+k5mCegh8rqeiVSlAN5SFn7lTETpTpRwuWKQKpGc79kcVJAD4J6cOogRzmPvBKl6wpWZ/1cIkqd7cpDXjWiLFMnsEU5VskHkWQj6xFEyXOU6cmS8AaO8omIYnl+2E+IIEwTy0TySpRl0lsutdVVY8IU6ZaSKKPAdFUITK2jbESSUNRkzZDShqI2MU+G/Ms2RykTYVQ0MQKqGpGoipXJRBmlFfi+jICrOtJ0L2kP5mlraxMXXnhhrd74G9dw9Pb21t27/vrrBU4clUrFu4dfHDNnzqzd0wUCNrzF6CxsNw9XhcAUUdK8F0Ve0i8pXrj/YOngOq255HWU6a3JMEILIkq4WYE1fv3rW1WI0f8sE+Wwdkmii5Kk1aG7XJqP1a0j/Xpfxvbw4cN1nJAkrQ7ckQfNx47THVGFxhAxoiD8TeSH36amplobQJw46fDfk/PR0XB2vdYreT9B+okSShXWDK2nNLGOjxR3mS1K4CrPWQITIk8QpUnc80qUuvVWEl2UJK0OveWS65W+GqVz68AoTvj009HN4JOk1YE9B/MEoKh7tKSjo5CHKYtSp2WimleZiVIVO5Xn80qUut6tPOTjElHmAS+ddSzlHOWeQ5u9fQrDvknJRKnfrRhXiTNR2sE+r0RZJvJwaRciV3WkTnKU86J9bbXPUZqqcBb5uioEbFFm0fvBZfDXQ+xgH0WEUfft1Lr4pbqqI00jXyqiZIvSjtUSx6pki9JO37BFaVrFqufPFqU6hmlzqFmUyICiQTFK+59dy708KdIK1yoH3vauocPwv7wzA/1P0aS0cwNddyn/de8s9L69F/WZLYAjt8v23y/1PSzmtv1MPNUxXzz/bFchz5YFs8RjXT92Cnf0O+r02PwHCok5ZAkyNbf1HgEZsy3ncvl4B/GuNgoakfUWffYJuoryIb0FnUbXaNpFLgs6C+XI1/x6Kyh/0iNp85d1bKP8X+p/KBKLtESQ9rm0ej+of2ReCeof9E1cXkmbf1j/1wXzkGsPF9tW3OxhR64NXMPXxnGQ8NLDuIa/6aR98eRrRLB0zYX88XXsoAOdMad7cl2b5LbY+vuR9tvFgl8sK/z5+K8WOYc96lQG7Oc8cZdz2ON9a/SdXFlvQTfhgK6i95T0FnQOXSNCkt9liqBtpLeC8oeOxJE2f1nHRuUPveTSNqNp9X5Q/8i8EtQ/SXglbf4oI6z/397xgvC+R0mbhSPxBx+963U+CQ+uEbGA7fE/VZwsT7qGjqTwYbrmWv5hgTxEnGgr1d2V37f63vKU9Ya1O8V72w8U8lz2dL94evYK57BHnRbPX1dIzCFLkCnIFmTMFXmneoQNaOldlfUWvdfy+0vPQ6dRnkS8cluhs6C75Gt+vRWUP1m7afOXdWxU/lFYpLUM0z4nY5VE7wf1j8wrQf2TRf6N+h/yUaoPN6cVCtvPvbtlyFNmUGwnPzlVyPPVJRtF16OrbUM9pnzUaWl7XyExhyxBpiBbkDE+GAFGIBgBJsocSIYJohw/frzof+MtZwigLET54AOzxLWTr3MGdybKHCgArqJ1BJgorXdBdAVsE2Vl1x7R0d5pVLmXiSgnTpgYG0vgfvjg0djpk3ocmCij3z9OwQgwUeZABmwTJaygJMo9qbJGeibKYJe6acufiTIHCoCraB0BJkrrXRBdAR1ECcsELr9bpt7quVz9Chj3cQ+E2Dx3Xs2Cwd94DulBmKtWrvbuwcokAsVzWzZvU7J6ikqUwGn6T++p4eofdIThCCsSaYE7nsffNAAJ66s0AxQmyuj3L98pjolNrZ1i4GO04oQY7GoSvcPfnVA8Tou9vXHyiptOsTqGH2eiNAywjuxViRKKFgoXpAclCzLEV0FojhK/IEPcw0lpoXjDiBLpkS+eBVHimTSKmp4pIlGCBIEL8Ol+/sUaTrJ1HoZjGFE26qs0+DNR6nhDXc5DJsqK6K1+lIKJMnl/MVEmxyzzJ1SIkpQ1WYJQpvhbJkq/giULiK5HuV6h1FVdhEUkShCkP3AH/4e5sYNwjMLV31dJyZKJMvPXOeMCZaLUWXRcSxHpWsWmYzrLzj4vJsrsMU9cogpRkpvVr0D9CpgsRyhx3JOVeRBRwtVKShrpGxFvHOVdRKIEhrLLFDj4sYzCMYgoG/VVHKzlNEyUiV/HTB7YU3Vr4pNSrcuXi95hv+nIcVIMdA7fa+paKwYHt4ndx+Uqjd7vWjsoKkcPhrheT4ujlQGxac/HXn5IOziwXrwjFyWGPAsUZeH+/hMy6fqJcthaHa7TgFhfy6i+nKbW5WJgcLB6SgXt6R1pz3KxfE2YX7hRu1HGWtFf/YzjcH3XiEMeJI3qn6wbmSiT4WUltWmipLlJkKo8ZxZmUZKVCoVN7tsoyydKgZeRKOPg6Mc1qq+icPbfZ6K08ko3KPSUGAQRdg4IopKPBwbEMH2M3JN9p0f2i4Hl3WLAI8ux94/sHxDLA+coT4uD61urpELzl0Ic279WdNXKHZvXsbq86omyUv2ucI3iTlSkMseWI04dFZW1XaJ3T7XKp4+Kga7ROogqedeNC6La7YFEZUh1CMCivv7J+p2JMhleVlKrECUsFlh7susV82WyBQhlLC//IGUcRpQgSNniJIWvsi6ziEQJN6vf9QrcCLs4OPqJMqqvmCitvKL6Cv1st+hukhW+lPWxTaI14N6JwS7ROXhKiMBnw4J5homuU2al03urFtlI2UF5nT4o1tdIt5HrFUFDRH4B5VSbhDo3gfBP7hWVqoW5/0QDCBu12xshBJQRWf9kXcZEmQwvK6lViBKKk6JWoZjl4BwiNpo3A4GSO1UmQgrwoahXIl/8T9G0bFGOXd5Bc8EYeMiRqoRtHByRFs+TCzeqr5gorbyi+go9MShZdb5sQ+4d21S1DPuPgH0Cnm1MlHWBPTJRRuY1QpQjGzoNjbiKm5q6xNoq8a2tRdcGE+pnu7uHiRJHpep6DXLJUvMbtXvYLB0bgRtZ/2RdxkSZDC8rqVWJUo5ehcKliEp5ITsIkiJfoeDlJSLy82SZglQpYpPctSoL44toUVLgFIiOIl/92EbhCDLFs+gfIsGovkpClux6tfJKhxd6bL8YXNs/6saUU4bcA0l1DpysEiXcsGvqn62zAuXlIQHkUkeUUXlJRAlSqrN068sZnj+sb/KhNdU6wwqWj8/ghq1G5YL7Yrd71KKsI/1ILJL1OxNlMryspNZBlEmUp420RSVKG1gmKZOJ0sor3aDQ42L3tmpgjeSLHJ2jHHvPs8ZqJHXIc2NWjp4eyf+k2Fud8wuboxyzDlImymo4TOO8JKKtzpMODu6vrtIcPk4drfgsSliZo/fFEOo84pqtkv9oU4cDdkbnLmkpS1S7g6zWqPon63cmymR4WUnNRGkFdq9Q3hTdHvblLXk4EtWLbK2edfOI1RAf+d4oSY6g9fGA6Bx5Ds/2epGgNF8or6MczqfOCvOeleZH5bxa14uDp4+I/lpe9c9Xaq5X1HdAWq9J6SgidbhNo+X62kM3RsoOTVdnwQa0BXA0rH8y6WKiTIaXldRMlFZgZ6K0BzuX7CICpwbridTFOjaqk0L9mShz0NlMlPY6iS1Ke9hzyTYR+FQcrEjuUjGyjlHPtj4ZNExv/ZkoM+gy1SKIKDGP1//77YU88XFkV79H+bs5rxYSc8gSZIq/R6n6hhb0eZ8btxalmpfmaqw/E2UOOv3DAx97yqzo59KFfc71BupUdNzRvqFKdXkBH4wAIxCIwP8DDrBg4JMoCaIAAAAASUVORK5CYII=)
2、B树的特性总结:
(1)每个节点都存储了[key, data]
(2)任何一个关键字出现且只出现在一个结点中;
(3)搜索有可能在非叶子结点结束;
(4)由于M/2的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占M/2的结点;删除结点时,需将两个不足M/2的兄弟结点合并;(插入、删除操作时需要解决的问题);
(5)B树同红黑树一样都是自平衡的树。
3、B树的搜索:
(1)搜索流程:
①从根结点开始,对结点内的关键字按照顺序继续进行等值判断;
②如果命中则结束,当前这个关键字对应的记录便是要查找的;
③如果没有命中,则进入查询关键字所属范围的儿子节点内,重复①的操作,直到所对应的儿子指针为空,或已经是叶子结点。此时则说明树中不存在这个关键字。
(2)B-Tree上查找算法的伪代码如下:
1. BTree_Search(node, key) {
2. if(node == null) return null;
3. foreach(node.key)
4. {
5. if(node.key[i] == key) return node.data[i];
6. if(node.key[i] > key) return BTree_Search(point[i]->node);
7. }
8. return BTree_Search(point[i+1]->node);
9. }
10. data = BTree_Search(root, my_key);
4、B树的插入、删除:
前言:修复方式之分裂、合并、转移:
由于插入、删除数据记录会破坏B-Tree的性质,因此在插入删除时,需要对树进行一个分裂、合并、转移等操作以保持B-Tree性质。
①分裂:拆分当前节点的中间节记录到上层,与上层的节点的记录进行合并操作;
②合并:将记录与上层节点的记录进行合并;
③转移:需要不断将当前记录与其的相邻下级子节点中的记录进行交换,直到当前记录处于叶子节点中。(如果操作的节点记录不在叶子节点,那么就需要进行转移操作)
(1)插入:B树的插入总是在叶子节点上
如果插入新的数据记录到某个节点之后,节点的记录个数大于等于M,那么需要进行分裂操作。
(2)删除:
①如果节点不在叶子节点上,那么需要把它替换到叶子节点上。然后对叶子节点执行删除操作;
②如果删除当前节点的某个记录之后,节点的记录个数小于ceil(M/2),那么需要进行合并操作;
③如果合并之后,上级节点记录个数小于等于ceil(M/2),那么此时首先判断当前节点的兄弟节点的记录个数是否在小于ceil(m/2),如果不是,那么取兄弟节点的一个记录与上级节点进行合并。否则,只能从上级节点的上级节点拉取一个记录下来进行合并。
注意:
②体情况具体分析。遇到连锁反应(eg:分裂之后有需要分裂),就继续处理呗。