二叉搜索树有以下性质:
1.非空左子树的所有键值小于其根节点的键值
2.非空右子树的所有键值大于其根节点的键值
3.左、右子树都是二叉搜索树
【Find查找指定元素】
①查找根节点,若为空,返回NULL
②非空,则节点值与查找值比较
1°X > 根值,右子树中找
2°X < 根值, 左子树中找
3° X == 根值,返回指向此节点的指针
//递归
Position Find(ELementType X, BinTree BST){
if(!BST) return NULL;
if(X > BST->Data)
return Find(X, BST->Right);
else if(X < BST->Data)
return Find(X, BST->Left);
else
return BST;
}
//非递归
Position Find(ELementType X, BinTree BST){
while(BST) {
if(X > BST->Data)
BST = BST->Right;
else if(X < BST->Data)
BST = BST->Left;
}
return NULL;
}
【返回最大、最小元素】
①最大元素一定在树的最右分支的端节点上
②最小元素一定在树的最左分支的端节点上
//最小非递归
Position FindMin(Bin Tree BST){
if(!BST) return NULL;
while(BST->Left)
BST = BST->Left;
return BST;
}
//最小递归
Pos