一、二叉排序树的定义(BST,Binary Search Tree)
【定义】
一棵二叉树或者是空二叉树,或者是具有如下性质的二叉树:①左子树上所有结点的关键字均小于根结点的关键字;
②右子树上所有结点的关键字均大于根结点的关键字;
③左子树和右子树又各是一棵二叉排序树
【即】左子树结点值 < 根结点值 < 右子树结点值
二、查找操作
【思路】
若树非空,目标值于根结点的比较
如果相等,则查找成功;若小于根结点,则在左子树上查找,否则在右子树上查找。
查找成功,返回结点指针;查找失败返回NULL
【代码】
//二叉排序树的结点
typedef struct BSTNode{
int key;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
//在二叉排序树中查找值为 key 的结点 最坏空间复杂度为O(1)
BSTNode *BST_Search(BSTree T,int key){
while(T!=NULL&&key!=T->key){
//若树空或者等于根结点值,则循环结束
if(key<T