4.1二叉搜索树

2017-10-28  本文已影响0人  哈喽阿甘

查找问题:

静态查找与动态查找

针对动态查找,数据如何处理

>二叉搜索树:一颗二叉树,可以为空,如果不为空,满足以下性质:

>>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.要删除的结点有左右两棵子树:用另一节点代替被删除节点:右子树的最小元素 或者做字数的最大元素

上一篇 下一篇

猜你喜欢

热点阅读