二叉排序树
也叫二叉查找树(BST,Binary Search Tree)。
性质:
左子树结点值 < 根结点值 < 右子树结点值
左子树和右子树又各是一棵二叉排序树
中序遍历可得到一个递增序列
1、二叉排序树的查找
逻辑:
若树非空,目标值与根节点的值比较;
若相等,则查找成功;
若小于根节点,则在左子树上查找,否则在右子树上查找。
代码:
typedef struct BSTNode{
int key;
struct *BSTNode lchild, rchild;
}BSTNode, *BSTree;
//在二叉排序树中查找值为key的结点
BSTNode *BST_Search(BSTree T, int key){
while(T!=NULL && key!=T->key){
if(key<T->key) T=T->lchild;
else T=T->rchild;
}
return T;
}
2、平衡二叉树
简称平衡树(AVL树)——树上任一结点的左子树和右子树的高度之差不超过1。
结点的平衡因子=左子树高-右子树高
平衡二叉树结点的平衡因子的值只能是-1、0、1。