# 二叉搜索(排序)树(BST) [二叉排序树](http://39.99.183.126:8888/p/701) --- 二叉排序树(Binary Sort Tree,简称 BST )又叫二叉查找树和二叉搜索树,是一种实现动态查找表的树形存储结构。 --- 二叉排序树本质是一棵二叉树,它的特别之处在于: - 对于树中的每个结点,如果它有左子树,那么左子树上所有结点的值都比该结点小; - 对于树中的每个结点,如果它有右子树,那么右子树上所有结点的值都比该结点大。 - 它的左子树和右子树都是二叉排序树 --- 举个简单的例子,下图就是一棵二叉排序树: ![image](http://39.99.183.126:8888/file/2/j_kj7sNhRt3LakRHe4OYT.png) 二叉排序树 以根节点为例,左子树上所有结点的值都比 41 小,右子树上所有结点的值都比 41 大。不仅是根结点,整棵二叉树上的非叶子结点都是如此,这样的二叉树就是一棵二叉排序树。 --- ### **二叉排序树的具体应用** 二叉排序树的常见操作有 3 种,分别是: - SearchBST(Key):查找指定的元素 Key; - InsertBST(Key):若二叉排序树中不存在元素 Key,将 Key 作为新结点插入到树上的适当位置; - DeleteBST(Key):若二叉排序树中存在元素 Key,将存储 Key 的结点从树中摘除。 接下来一一讲解这 3 种操作的实现思路,并给出可参考的实现代码。 --- #### **1、二叉排序树查找元素** 在二叉排序树中查找目标元素,就是从树根结点出发,先将树根结点和目标元素做比较: - 若当前结点不存在,则查找失败;若当前结点的值和目标元素相等,则查找成功; - 若当前结点的值比目标元素大,目标元素只可能位于当前结点的左子树中,继续进入左子树查找; - 若当前结点的值比目标元素小,目标元素只可能位于当前结点的右子树中,继续进入右子树查找; --- 以图 1 中的二叉排序树为例,查找元素 32 的过程是: - 从树根结点出发,41 比目标元素 32 大,则 32 只可能位于 41 的左子树中,继续进入左子树查找; - 当前子树的根结点 20 比目标元素 32 小,则 32 只可能位于 20 的右子树中,继续进入右子树查找; - 当前子树的根结点 29 比目标元素 32 小,则 32 只可能位于 29 的右子树中,继续进入右子树查找; - 当前子树只有一个根结点 32,和目标元素相等,正是要找的目标元素。 ![image](http://39.99.183.126:8888/file/2/j_kj7sNhRt3LakRHe4OYT.png) --- 整个查找过程如下图所示: ![image](http://39.99.183.126:8888/file/2/j_kj7sNhRt3LakRHe4OYT.png) --- 编码实现在二叉排序树中查找目标元素,可以参考如下的程序: ```c++ BiTree SearchBST(BiTree T, KeyType key) { //如果 T 为空,则查找失败,返回NULL;或者查找成功,返回指向存有目标元素结点的指针 if (!T || key == T->data) { return T; } else if (key < T->data) { //继续去左子树中查找目标元素 return SearchBST(T->lchild, key); } else { //继续去右子树中查找目标元素 return SearchBST(T->rchild, key); } } ``` --- #### **2、二叉排序树插入元素** 二叉排序树中各个结点的值都不相等,因此新插入的元素一定是原二叉排序树没有的,否则插入操作会失败。此外插入新元素后,必须保证整棵树还是一棵二叉排序树。 二叉排序树插入新元素的方法是:在树中查找新元素,最终查找失败时找到的位置,就是放置新元素的位置。 例如在图 1 的二叉排序树中插入新元素 30,在树中查找 30,最终查找失败时找到的位置是结点 32 的左孩子,直接将 30 作为 32 的左孩子即可。 ![image](http://39.99.183.126:8888/file/2/j_kj7sNhRt3LakRHe4OYT.png) --- 编码实现向二叉排序树中插入新元素,可以参考下面的程序: ```c++ //向二叉排序树 T 中插入目标元素 e Status InsertBST(BiTree* T, ElemType e) { //如果本身为空树,则直接添加 e 为根结点 if ((*T) == NULL) { (*T) = (BiTree)malloc(sizeof(BiTNode)); (*T)->data = e; (*T)->lchild = NULL; (*T)->rchild = NULL; return true; } //如果找到目标元素,插入失败 else if (e == (*T)->data) { return false; } //如果 e 小于当前结点的值,表明应该将 e 插入到该结点的左子树中 else if (e < (*T)->data) { InsertBST(&(*T)->lchild, e); } //如果 e 大于当前结点的值,表明应该将 e 插入到该结点的右子树中 else { InsertBST(&(*T)->rchild, e); } } ``` --- InsertBST() 函数本意是将指定元素插入到二叉排序树中,当二叉排序树不存在(为 NULL)时,此函数还能完成二叉排序树的构建工作。 作为实现动态查找表的树形结构,二叉排序树通常不会一次性创建好,而是一边查找一边创建,InsertBST() 就是实现此过程的函数。 --- #### **3、二叉排序树删除元素** 删除二叉排序树中已有的元素,必须确保整棵树还是一棵二叉排序树。 假设被删除的元素是 P,删除的同时需要妥善处理它的左、右子树。根据结点 P 是否有左、右孩子,可以归结为以下 3 种情况: --- 1. P 是叶子结点:可以直接摘除,整棵树还是二叉排序树。 例如,删除图 1 中的结点 32,它就是一个叶子结点,直接删除它并不会破坏二叉排序树的结构。 2. P 只有一个孩子(左孩子或右孩子):若 P 是双亲结点(用 F 表示)的左孩子,直接将 P 的孩子结点作为 F 的左孩子;反之若 P 是 F 的右孩子,直接将 P 的孩子结点作为 F 的右孩子。 例如,删除图 1 中的结点 29,它只有一个孩子结点 32。由于 29 是双亲结点 20 的右孩子,因此直接将 32 作为 20 的右孩子,这样做既删除了结点 29,整棵树还是二叉排序树。 3. P 有两个孩子:中序遍历整棵二叉排序树,在中序序列里找到 P 的直接前驱结点 S,将 P 结点修改成 S 结点,然后再将之前的 S 结点从树中摘除。(如果A有两个子节点,我们就以右子树内的最小节点取代A,从其右子树中找到最小值替代之) ![image](http://39.99.183.126:8888/file/2/j_kj7sNhRt3LakRHe4OYT.png) --- 在二叉排序树中,对于拥有两个孩子的结点,它的直接前驱结点要么是叶子结点,要么是没有右孩子的结点,所以删除直接前驱结点可以套用前面两种情况的实现思路。 例如,删除图 1 中的结点 20,它在中序序列里的直接前驱结点是 11,将 P 结点的值修改为 11,然后再根据情况 1 的实现思路,将之前的结点 11 直接从树中摘除。 编码实现在二叉排序树中删除某个元素,可以参考如下的程序: ![image](http://39.99.183.126:8888/file/2/j_kj7sNhRt3LakRHe4OYT.png) --- ```c++ //实现删除 p 结点的函数 Status Delete(BiTree* p) { BiTree q = NULL, s = NULL; //情况 1,结点 p 本身为叶子结点,右孩子也为 NULL,用 NULL 直接替换 p 结点即可 //情况 2,结点 p 只有一个孩子 if (!(*p)->lchild) { //左子树为空,只需用结点 p 的右子树根结点代替结点 p 即可; q = *p; *p = (*p)->rchild; free(q); } else if (!(*p)->rchild) {//右子树为空,只需用结点 p 的左子树根结点代替结点 p 即可; q = *p; *p = (*p)->lchild; free(q); } //情况 3,结点 p 有两个孩子 else { q = *p; s = (*p)->lchild; //遍历,找到结点 p 的直接前驱,最终 s 指向的就是前驱结点,q 指向的是 s 的父结点 while (s->rchild) { q = s; s = s->rchild; } //直接改变结点 p 的值 (*p)->data = s->data; //删除 s 结点 //如果 q 和 p 结点不同,删除 s 后的 q 将没有右子树,因此将 s 的左子树作为 q 的右子树 if (q != *p) { q->rchild = s->lchild; } //如果 q 和 p 结点相同,删除 s 后的 q(p) 将没有左子树,因此将 s 的左子树作为 q(p)的左子树 else { q->lchild = s->lchild; } free(s); /* //左右节点都不空 else { s = p->rchild; /* the s without left child */ if (!s->lchild) s->lchild = p->lchild; /* the s have left child */ else { /* find the smallest node in the left subtree of s */ while (s->lchild) { /* record the parent node of s */ parent = s; s = s->lchild; } parent->lchild = s->rchild; s->lchild = p->lchild; s->rchild = p->rchild; } *root = s; } */ } return true; } //删除二叉排序树中已有的元素 Status DeleteBST(BiTree* T, int key) { //如果当前二叉排序树不存在,则找不到 key 结点,删除失败 if (!(*T)) { return false; } else { //如果 T 为目标结点,调用 Delete() 删除结点 if (key == (*T)->data) { Delete(T); return true; } else if (key < (*T)->data) { //进入当前结点的左子树,继续查找目标元素 return DeleteBST(&(*T)->lchild, key); } else { //进入当前结点的右子树,继续查找目标元素 return DeleteBST(&(*T)->rchild, key); } } } ``` --- ### **二叉排序树的具体实现** 总的来讲,实现二叉排序树的查找、插入和删除操作,可以参考如下的程序: ```c++ #include
#include
#define ElemType int #define KeyType int typedef enum { false, true } Status; /* 二叉排序树的节点结构定义 */ typedef struct BiTNode { int data; struct BiTNode* lchild, * rchild; } BiTNode, * BiTree; //在 T 二叉排序树中查找 key BiTree SearchBST(BiTree T, KeyType key) { //如果 T 为空,则查找失败,返回NULL;或者查找成功,返回指向存有目标元素结点的指针 if (!T || key == T->data) { return T; } else if (key < T->data) { //继续去左子树中查找目标元素 return SearchBST(T->lchild, key); } else { //继续去右子树中查找目标元素 return SearchBST(T->rchild, key); } } //向二叉排序树 T 中插入目标元素 e Status InsertBST(BiTree* T, ElemType e) { //如果本身为空树,则直接添加 e 为根结点 if ((*T) == NULL) { (*T) = (BiTree)malloc(sizeof(BiTNode)); (*T)->data = e; (*T)->lchild = NULL; (*T)->rchild = NULL; return true; } //如果找到目标元素,插入失败 else if (e == (*T)->data) { return false; } //如果 e 小于当前结点的值,表明应该将 e 插入到该结点的左子树中 else if (e < (*T)->data) { InsertBST(&(*T)->lchild, e); } //如果 e 大于当前结点的值,表明应该将 e 插入到该结点的右子树中 else { InsertBST(&(*T)->rchild, e); } } //实现删除 p 结点的函数 Status Delete(BiTree* p) { BiTree q = NULL, s = NULL; //情况 1,结点 p 本身为叶子结点,右孩子也为 NULL,用 NULL 直接替换 p 结点即可 //情况 2,结点 p 只有一个孩子 if (!(*p)->lchild) { //左子树为空,只需用结点 p 的右子树根结点代替结点 p 即可; q = *p; *p = (*p)->rchild; free(q); } else if (!(*p)->rchild) {//右子树为空,只需用结点 p 的左子树根结点代替结点 p 即可; q = *p; *p = (*p)->lchild; free(q); } //情况 3,结点 p 有两个孩子 else { q = *p; s = (*p)->lchild; //遍历,找到结点 p 的直接前驱,最终 s 指向的就是前驱结点,q 指向的是 s 的父结点 while (s->rchild) { q = s; s = s->rchild; } //直接改变结点 p 的值 (*p)->data = s->data; //删除 s 结点 //如果 q 和 p 结点不同,删除 s 后的 q 将没有右子树,因此将 s 的左子树作为 q 的右子树 if (q != *p) { q->rchild = s->lchild; } //如果 q 和 p 结点相同,删除 s 后的 q(p) 将没有左子树,因此将 s 的左子树作为 q(p)的左子树 else { q->lchild = s->lchild; } free(s); } return true; } //删除二叉排序树中已有的元素 Status DeleteBST(BiTree* T, ElemType key) { //如果当前二叉排序树不存在,则找不到 key 结点,删除失败 if (!(*T)) { return false; } else { //如果 T 为目标结点,调用 Delete() 删除结点 if (key == (*T)->data) { Delete(T); return true; } else if (key < (*T)->data) { //进入当前结点的左子树,继续查找目标元素 return DeleteBST(&(*T)->lchild, key); } else { //进入当前结点的右子树,继续查找目标元素 return DeleteBST(&(*T)->rchild, key); } } } //中序遍历二叉排序树 void INOrderTraverse(BiTree T) { if (T) { INOrderTraverse(T->lchild);//遍历当前结点的左子树 printf("%d ", T->data); //访问当前结点 INOrderTraverse(T->rchild);//遍历当前结点的右子树 } } //后序遍历,释放二叉排序树占用的堆内存 void DestroyBiTree(BiTree T) { if (T) { DestroyBiTree(T->lchild);//销毁左孩子 DestroyBiTree(T->rchild);//销毁右孩子 free(T);//释放结点占用的内存 } } int main() { int i; int a[10] = { 41,20,11,29,32,65,50,91,72,99 }; BiTree T = NULL; for (i = 0; i < 10; i++) { InsertBST(&T, a[i]); } printf("中序遍历二叉排序树:\n"); INOrderTraverse(T); printf("\n"); if (SearchBST(T, 20)) { printf("二叉排序树中存有元素 20\n"); } printf("删除20后,中序遍历二叉排序树:\n"); DeleteBST(&T, 20); INOrderTraverse(T); //后续遍历,销毁整棵二叉排序树 DestroyBiTree(T); } ``` --- 以图 1 为例,程序执行结果为: 中序遍历二叉排序树: 11 20 29 32 41 50 65 72 91 99 二叉排序树中存有元素 20 删除20后,中序遍历二叉排序树: 11 29 32 41 50 65 72 91 99 --- ### **总结** 二叉排序树是一种实现动态查找表的树形存储结构。同一张查找表中,元素的排序顺序不同,最终构建出的二叉排序树也不一样。 例如,{45,24,53,12,37,93} 和 {12,24,37,45,53,93} 是同一张动态查找表,只是元素的排序顺序不同,它们对应的二叉排序树分别为: --- ![img](data:image/png;base64,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JgIiIAIiIAK1JIBgIn3Oe++95/O+Ll++vOX03k5MhT6kWbhwpj98+LBfRiTA6X333RdaRC3Pk8CqZbOp0iIgAiIgAiKQHQFyhb700ku+QHywWNLj6EdYxWtnQgsBd/DgQS/iEFpNPSSwmtqyei4REAEREAERCCCAr9XOnTu9Remxxx7z/lVZCqt2Qot77t6921vICHYaX1oMqHblT5HAqnwTqYIiIAIiIAIikA8Bi4G1bNmy1u7BPMWVPQWCCp8swkNw4FjfNJElgZVPn1WpIiACIiACIlBpAjix//a3v/XhGR5++OFcrVbtQCCoiCRvFqympeuRwKp091flREAEREAERCB7ApYix+JeFWG16iayNm3a5KZPn+42btyY/cOWVKIEVkngdVsREAEREAERKIsAlissSC+++GLhlqv4M1MPs6YhsBYvXlwWlkzvK4GVKU4VJgIiIAIiIALVJsAuviNHjni/p9tuu610gQUtRBb1IkwEOwybkGpHAqva74FqJwIiIAIiIAKZEbClQXYLEiahrKXBTg+EPxYR4rds2ZLZM5dVkARWWeR1XxEQAREQAREomMDrr7/uiHnF0mDVjuhS4d69e1tBTqtWz9D6SGCFktJ5IiACIiACIlBjAma9ws+JmFdVs17ZUqGFbqi7FUsCq8Yvi6ouAiIgAiIgAqEEyDNI3Ksqh0PAimWBT/HHqrMvlgRWaM/UeSIgAiIgAiJQYwJr1651CxcuTBTzqlfwz7gVrN35aSxl69ev94mhyYdY10MCq64tp3qLgAiIgAiIQCAB/K4IzYDv1YwZM4KXB7mOn/iBaKIcUt1EjzNnzrhz5875KO0TJkxws2fPdvPmzQus5Y+nIdL279/vRkZGKukrFvowElihpHSeCIiACIiACNSUACEQPvnkk0TLgwgdnOLffPNNd/PNN4958u+++86n1uEHscW5LEFyPst6FqWd8x544AEv7npZw+wGnMdS5iuvvOLDNtR1mVACq6Yvi6otAiIgAiIgAqEEECscOLiHLtmZJenw4cP+ultvvbV1u3/+858+hhY/ZnVCxHEsWLDAh1rAioVA4v8Jv5AkHc+VK1fcunXrWha30Oes0nkSWFVqDdVFBERABERABHIggAWJpbokIicqsA4cOHDDcmA7oWZWKrNqEaEdoTR37txEy31cjygjVhc/dTwksOrYaqqz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RKBZBEivs2bNGp+3MJpep25PKYFVtxZTfUVABERABESg4QQ++ugj9/rrr7sDBw4ER4avGhIJrKq1iOojAiIgAiIgAiLgnnvuOZ+OZ+/evbWkIYFVy2ZTpUVABERABESg2QTqnhBaAqvZ/VNPJwIiIAIiIAK1JfD555+7HTt21DIhtARWbbudKi4CIiACIiACzSdAQujz58+7PXv21CohtARW8/umnlAEREAEREAEakuAhNCrVq1yS5YscY8//nhtnkMCqzZNpYqKgAiIgAiIwGASOHHihNu6dWutlgolsAazr+qpRUAEREAERKBWBEgIfezYMR/pnUCkVT8ksKreQqqfCIiACIiACIiAY6nwsccec/PmzfP5Cqt+SGBVvYVUPxEQAREQAREQAU/gr3/9qyOVzpYtW9x9991XaSoSWJVuHlVOBERABERABEQgSuCdd95xR44c8UuFVU4ILYGlfisCIiACIiACIlArAuvWrfPiqsoJoSWwatWlVFkREAEREAEREAFLCI0v1uLFi7sC+frrrx0/X375pRsZGXGXL192V69e9dcMDQ25cePG+XyH06ZNc3feeaf/k3/3e0hg9UtQ14uACIiACIiACBROoFtCaATYp59+6ncdjo6OukmTJrmpU6e6yZMn+7+zC5EfHOf54RzEF0KMY+LEiV648ZN2GVICq/AuoRuKgAiIgAiIgAhkQYCE0Aik3//+9744nODfe+89R4qdGTNm+B2Hc+fO9VapkNAO5D/86quvHHG3Tp8+7RBqiKzly5cntmpJYGXRwipDBERABERABESgcAIIoieeeMItXbrUL/sdPXrUC6qHHnrIzZo1qyWqEGGhhwkxrjl58qQXbFi2VqxY4YVWiFDjXhJYocR1ngiIgAiIgAiIQOUIsKuQHYVYrH7zm9+4+fPn+zomEVWdHsrE1CeffOIOHz7sT3v22We9RazXIYHVi5B+LwIiIAIiIAIiUEkCFrIhal3KQljFHxahhbUMIYfYCnGul8CqZJdRpURABERABERABLoReP3111tih6CjeQirdkKLJUOEFlHlWTLsdEhgqf+KgAiIgAiIgAjUigDiCkd2nNxZGixCXBkgrFnce8eOHV1FlgRWrbqUKisCIiACIiACg03AlgUJMlq0uIqKLJYKX3nllY7LhRJYg91P9fQiIAIiIAIiUBsChE/YunVrKxdhkZarbsuFe/fuvcHxXQKrNt1KFRUBERABERCBwSWAkzl+Tzi0P/zww4UuC3aiznIhS4UEKd23b9+Y0ySwBrev6slFQAREQAREoDYEWI4j8CdBRcu0XMWBUReLxYXws0MCqzZdSxUVAREQAREQgcEkQIT23/72t27btm0+zlWVBBZWLNL2sLOQH0utI4E1mH1VTy0CIiACIiACtSHAbsHx48d736sqiasoQATgnDlz3OOPP+7/WwKrNt1LFRUBERABERCBwSNAmhrES5m7BntRx4rFrkLCRxw8eNCn05HA6kVNvxcBERABERABESiNwP79+9358+e9wMr7iOYhTHovLGubNm1yK1eu9AmiJbCSEtT5IiACIiACIiAChRFYu3atW7JkiY+anmR50MQSjvEct912m/+zXRmWCufKlSutc/m/pPfDgsVuR5YyJbAK6yK6kQiIgAiIgAiIQBICLA/if5U0YrtFW3/rrbfcxYsX/S1J0GzJoKPCCQGGczqO9Igjrr399ttblqhQkRW9565duySwkjS0zhUBERABERABESiOALvzjh496vbs2RN8U4QO+QIJ63DnnXe6pUuXuqtXr/pyEEvbt293lrvQzkVgPfjgg97KheDivogtzmW5L1RkWcgGwjbIghXcZDpRBERABERABESgSALRJbdQkYNAWrdunQ+XQMwsWxq0UA9Yp6KCjfMRWnYez0euwaefftotWLAgse8X1rbp06dLYBXZUXQvERABERABERCBcAKIlZkzZwZHbreYVLbrMOq3xe8QbOQyfO211zrG0zJ/LKxQHFyDWAsVeJyPaJMFK7yddaYIiIAIiIAIiECBBHBwX7ZsmV++CxE4iCN2HeJ79fLLL7eWAqmyhVJ45pln3ObNmzs6zXMeAuk//uM/3Ny5cxNZsOz+w8PDElgF9hPdSgREQAREQAREIAGBVatW+fyDoX5QCBwsVIR0YHkwKszMukWyaIKB8hMVbbbrEN8rrj1+/PgYf62Qatv9iYUlC1YIMZ0jAiIgAiIgAiJQOAESO2/cuHGMJapbJRA4J06ccE8++aSbPXu2Yzefpa5BOBGnit+zm5AlQASWWbZwjOfAejVp0iT31FNPuRkzZgRZzqxOJrBwmpfAKry76IYiIAIiIAIiIAIhBJJasCgTkcMOwkOHDnk/q4ULF/pbHTt2zP/5xRdfeHFFYmYTWIirI0eO+N8jxBBlXPerX/0qkf+VLFghrapzREAEREAEREAESiWQ1AcrWtm3337b4Qt16dIlN2XKFL/MiEXq+eef91axToFLCTaK4HrzzTfdL37xi1Q+WIg5WbBK7Tq6uQiIgAiIgAiIQCcC7CKcOnXqDf5SIcTMWd2sVIRhsPhYcQf4aHnmi7Vjxw73/vvv+x2HFjcr5L7aRRhCSeeIgAiIgAiIgAiURoAdgZcvX/apZ0J2EcYramLJ/p/wDUSH37t3r5s4cWLH57Klvt27d7tt27YF72KkQO6BIJMFq7RuoxuLgAiIgAiIgAh0I/DJJ5+4w4cPJ4rkTnnxpM2WxobgoatXrx5jEYuKMLN2UYZZsPbt29cxZla87iwvIrA2bNgggaWuLQIiIAIiIAIiUE0CaXMRnjlzxt1yyy0+Ojui6eTJk97xHTGF9cqitrNjkLAO+Frddddd/vecT6oclvqI5M4yZdwS1o6W7UZEECoXYTX7k2olAiIgAiIgAiLwvwRwdGdHn+366wUGocM1X375pbv77rvd6Oiod3QnL2E8abTlDjx37py74447fHgGkkN/++23XnThDG8iLeS+iDjKZElTS4S9iOn3IiACIiACIiACpRHAwkRuQIJ/hh5YrE6dOuVDLnCwe5BdhO1S3mDFIqgofyKOJk+e7IUZflRm0Qq5ry0PEgJCPlghxHSOCIiACIiACIhAaQQQPmvWrPHO5sS1CnF2b7ek1+m6Tst/IfcxKBYlngCjRHHn37JgldZldGMREAEREAEREIEQAjicX7t2zcekSiJ8QsrO6pz169e3ljIpUwIrK7IqRwREQAREQAREIBcCOLuvW7fO+zYliUmVS2VihWKtIr4WliuzXklgFUFe9xABERABERABEeibADGxyCO4Z8+evsvKqgALZkpoBtL6kFzaDlmwsqKsckRABERABERABHIjwNLgY4895i1Ylqg5t5sFFozAYmcidYs74UtgBULUaSIgAiIgAiIgAuUS+Otf/+oDeSKwsBaV6Y+FuMKqRr5DnNvZoRg9JLDK7Su6uwiIgAiIgAiIQAICFgS0TH8s87tCWNnuxvgjSGAlaFSdKgIiIAIiIAIiUD4BYmMdOXLEBwIt2undQjIQ6Z37E1+r3SGBVX4/UQ1EQAREQAREQAQSEkBksWvPlgu5PM8lQ4uXxbLg0aNHu4or6iKBlbBBdboIiIAIiIAIiEA1CNhyIVYkHODbRWrPoqa2WxCrFX5gmzdv9kFPux0SWFmQVxkiIAIiIAIiIAKlEEDwvPrqq/7eK1euHLNk169FK5r8mSVJ8hJafsJeDyuB1YuQfi8CIiACIiACIlBpAggpgn2aCFq+fLmbN29ea2dfEqFlS4Gk6CGfIcuBJIzGQhaNc9ULiARWL0L6vQiIgAiIgAiIQC0IIIo++OADHzph0qRJbs6cOW7u3Llu5syZPj9gp7yDPBwijITNWMQQViSM5li6dKkXVvEwDL2ASGD1IqTfi4AIiIAIiIAI1IrAP/7xD/f555/7n8uXL7urV6/65T1+JkyY4IaGhlrPw+84B3GGwOJ3U6dOdYsWLfJWsG6irBsUCaxadRlVVgREQAREQAREIAkBhBO5DL/44gt3/vx5/3esVfwgnrBMIbwQU/fcc4+76667Elur2tXn/wP5zN2tdjyuTQAAAABJRU5ErkJggg==)图 4 不同形态的二叉排序树 左侧二叉排序树表示的是 {45,24,53,12,37,93},右侧二叉排序树表示的是 {12,24,37,45,53,93}。 --- 二叉排序树的查找性能和整棵树的形态有关。以图 4 为例,假设查找表中元素被查找的概率是相等的(都为1/6),左侧二叉排序树的查找性能用平均查找长度(ASL)表示: ASL = 1/6 * (1+2+2+3+3+3) = 14/6 右侧二叉排序树的查找性能为: ASL = 1/6 * (1+2+3+4+5+6) = 21/6 ASL 值越小,查找的性能就越高。显然,图 4 左侧二叉排序树的查找性能更高。 也就是说,一张动态查找表往往对应着多棵二叉排序树,当表中元素的查找概率相同时,二叉排序树的层数越少,查找性能越高。