查找问题:
静态查找与动态查找
针对动态查找,数据如何处理
>二叉搜索树:一颗二叉树,可以为空,如果不为空,满足以下性质:
>>1.非空左子树的所有键值小于其根结点的键值。
>>2.非空右子树的所有键值大于其根结点的键值。
>>3.左右子树都是二叉搜索树。
简单的说就是左边小右边大。
二叉搜索树操作的特别函数:
Position Find(ElementType X, BinTree BST):从二叉搜索树BST中查找元素X,并返回其所在结点的地址;
Position FindMin( BinTree BST):从二叉搜索树BST中查找并返回最小元素所在节点的地址。
Position FindMax( BinTree BST):从二叉搜索树BST中查找并返回最大元素所在节点的地址。
BinTree Insert(ElementType X,BinTree BST)
BinTree Delete(ElementType X,BinTree BST)
>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/*X==BST->Data/
return BST;/查找成功,返回结点的找到的节点的地址
}
尾递归,尾递归都可以用循环来实现。
查找效率取决于速度高度二叉搜索树的插入
关键是找到元素应该插入的位置,可以采用与find类似的方法。
字典字母顺序排列
###二叉搜索树的删除
三种情况:
1.要删除的是叶节点:直接删除
2.要删除的结点只有一个孩子节点:
3.要删除的结点有左右两棵子树:用另一节点代替被删除节点:右子树的最小元素 或者做字数的最大元素
网友评论