2469
备注:
|
2521
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 114: | 行号 114: |
* LL旋转 * RR旋转 * LR旋转 * RL旋转 |
查找
1. 概念
平均查找长度:
查找成功时的平均查找长度:
2. 线性结构的查找
查找结构:
2.1. 顺序查找
查找成功时的平均查找长度:(n+1)/2
查找不成功时的平均查找长度:n
2.2. 折半查找
折半查找要求元素先排序
查找成功时的平均查找长度
3. 树型结构查找
3.1. 二叉排序树
二叉排序树是一棵空二叉树或者满足以下条件的二叉树:
- 左子树为空树或者左子树上所有结点的值小于根结点的值;
- 右子树为空树或者右子树上所有结点的值大于根结点的值;
- 左子树和右子树也是二叉排序树。
二叉排序树表示
二叉排序树的插入
1 struct node *insert_bst(struct node *root, datatype elem){
2 if(root == NULL) {
3 root = malloc(sizeof(struct node));
4 root->data = elem;
5 root->left = root->right = NULL;
6 return root;
7 }
8 if(root->data.key < elem.key)
9 root->right = insert_bst(root->right, elem);
10 else if(root->data.key > elem.key)
11 root->left = insert_bst(root->left, elem);
12 }
二叉排序树的查找
二叉排序树的删除结点
3.2. 二叉排序树的平衡
AVL平衡
- LL旋转
- RR旋转
- LR旋转
- RL旋转
红黑平衡
3.3. B树