4.1 二叉搜索树
4.1.1 定义与抽象数据类型的基本操作
1.
一棵二叉树,可以为空;如果不为空,满足以下性质:
1. 非空 左子树 的所有 键值小于其根结点 的键值。
2. 非空 右子树 的所有 键值大于其根结点 的键值。
3. 左、右子树都是二叉搜索树 。
2.
查找:
1.1.Position Find( ElementType X,BinTree BST )
:从二叉搜索树BST中查找元素X ,返回其所在结点的地址;
1.2.Position FindMin( BinTree BST )
:从二叉搜索树BST 中查找并返回最小元素所在结点的地址;
1.3.Position FindMax( BinTree BST )
:从二叉搜索树BST 中查找并返回最大元素所在结点的地址。注:
1.尾递归都可以用循环实现!
2. 查找效率与树的高度有关!
插入与删除
1.BinTree Insert( ElementType X,BinTree BST )
2.BinTree Delete( ElementType X,BinTree BST )
注:
1. 插入和删除有三种情况:
- 没有左儿子和右儿子;
- 只有左儿子或者右儿子;
- 既有左儿子又有右儿子(选取右子树中最小的那个)。
4.2 平衡二叉树
4.2.1 定义和特点
1.
平衡因子定义:
平衡因子 (Balance Factor,简称BF):@H_784_502@BF(T)=hL−hR 其中hL 和hR 分别为T 左、右子树的高度。
平衡二叉树的定义:
平衡二叉树 (Balanced Binary Tree)(AVL):
空树,或者任一结点左、右子树高度差的绝对值不超过1 ,即@H_301_743@|BF(T)|≤1 。
2.
4.2.2 平衡二叉树的调整
整体思路:
RR旋转
LL旋转
LR旋转
RL旋转