《数据结构A》第07章.ppt
《《数据结构A》第07章.ppt》由会员分享,可在线阅读,更多相关《《数据结构A》第07章.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构数据结构 Data Structures in C+南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 第第7 7章章 动态集和搜索树动态集和搜索树 南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.1二叉搜索树二叉搜索树7.2二叉平衡树二叉平衡树7.3B-树树南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.1 7.1 二叉搜索树二叉搜索树南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.1.1二叉搜索树的定
2、义二叉搜索树的定义定定义义7.1设设结结点点由由关关键键字字值值表表征征,假假定定所所有有结结点点的的关关键键字字值值各各不不相相同同,二二叉叉搜搜索索树树或或者者是是一一棵棵空空二二叉叉树树,或或者者是是具具有有下下列列性性质质的的二叉树:二叉树:(1)若若左左子子树树不不空空,则则左左子子树树上上所所有有结结点点的的关键字值均小于根结点的关键字值;关键字值均小于根结点的关键字值;(2)若若右右子子树树不不空空,则则右右子子树树上上所所有有结结点点的的关键字值均大于根结点的关键字值;关键字值均大于根结点的关键字值;(3)左、右子树也分别是二叉搜索树。)左、右子树也分别是二叉搜索树。南京邮电大
3、学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 性性质质7.17.1 若若以以中中序序遍遍历历一一棵棵二二叉叉搜搜索索树树,将将得到一个以关键字值递增排列的有序序列。得到一个以关键字值递增排列的有序序列。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 二叉搜索树类二叉搜索树类二叉搜索树类二叉搜索树类 templatetemplateclassclassBSTreeBSTree:public:publicDynamicSetDynamicSet public:public:BSTree()root=NULL;Resul
4、tCodeSearch(T&x)const;ResultCodeInsert(T&x);ResultCodeRemove(T&x);protected:BTNode*root;private:private:ResultCodeSearch(BTNode*p,T&x)const;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.1.2二叉搜索树的搜索二叉搜索树的搜索 二叉搜索树搜索递归算法二叉搜索树搜索递归算法templateResultCodeBSTree:Search(T&x)constreturnSearch(root,x);南京邮电大学计算
5、机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 templateResultCodeBSTree:Search(BTNode*p,T&x)constif(!p)returnNotPresent;elseif(xelement)returnSearch(p-lChild,x);elseif(xp-element)returnSearch(p-rChild,x);elsex=p-element;returnSuccess;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 二叉搜索树搜索迭代算法二叉搜索树搜索迭代算法templat
6、eResultCodeBSTree:Search(T&x)constBTNode*p=root;while(p)if(xelement)p=p-lChild;elseif(xp-element)p=p-rChild;elsex=p-element;returnSuccess;returnNotPresent;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.1.3二叉搜索树的插入二叉搜索树的插入templateResultCodeBSTree:Insert(T&x)BTNode*p=root,*q=NULL;while(p)q=p;if(xelem
7、ent)p=p-lChild;elseif(xp-element)p=p-rChild;elsex=p-element;returnDuplicate;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 p=newp=newBTNodeBTNode(x);(x);if(!root!root)root=p;elseif(xelement)q-lChild=p;elseq-rChild=p;returnSuccess;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 南京邮电大学计算机学院南京邮电大学计算机学院陈慧南
8、陈慧南 2006 2006年年9 9月月 7.1.4二叉搜索树的删除二叉搜索树的删除若结点若结点*p有两棵非空子树有两棵非空子树需需搜搜索索*p的的中中序序遍遍历历次次序序下下的的直直接接后后继继(或或直直接接前前驱驱)结结点点,设设为为*s,将将*s的的值值复复制制到到*p中中,称称为为替替代代,因因为为*s最最多多只只有有一一棵棵非非空空子子树树,这这样样一一来来,问问题题转转化化为为“被被删删除除的的结结点点最最多多只只有有一一棵棵非非空空子子树树”的的情形。情形。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 若结点若结点*p p 只有一棵非
9、空子树或只有一棵非空子树或*p p是叶子是叶子 以以*p p的的惟惟一一孩孩子子(设设为为*c c)或或空空子子树树(c cNULLNULL)取代取代*p p,链接至链接至*p p的双亲结点的双亲结点*q q。若若被被删删除除的的结结点点*p p是是根根结结点点,则则删删除除后后,结结点点*c c成成为为新新的的根根;若若*p p是是其其双双亲亲*q q的的左左孩孩子子,则则*c c也也应应成成为为*q q的的左左孩孩子子,否否则则*c c成成为为*q q的的右孩子。最后释放结点右孩子。最后释放结点*p p所占用的空间。所占用的空间。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2
10、006 2006年年9 9月月 删除删除28南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 templateResultCodeBSTree:Remove(T&x)BTNode*c,*s,*r,*p=root,*q=NULL;while(p&p-element!=x)/搜索搜索q=p;if(xelement)p=p-lChild;elsep=p-rChild;if(!p)returnNotPresent;x=p-element;南京邮电大学计算机学院南京邮电大
11、学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 if(p-lChild&p-rChild)/替代替代s=p-rChild;r=p;while(s-lChild)r=s;s=s-lChild;p-element=s-element;p=s;q=r;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 if(p-lChild)c=p-lChild;/删除结点删除结点elsec=p-rChild;if(p=root)root=c;elseif(p=q-lChild)q-lChild=c;elseq-rChild=c;deletep;returnSuc
12、cess;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.1.5平均情况时间分析平均情况时间分析二叉搜索树搜索的平均时间为二叉搜索树搜索的平均时间为O(log2n)。最坏情况搜索时间为最坏情况搜索时间为O(n)。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 假设在一个有假设在一个有n(n 1)个关键字的序列,有个关键字的序列,有i个关键字小于第一个关键字,个关键字小于第一个关键字,n-i-1个关键个关键字大于第一个关键字。由此序列构成的二字大于第一个关键字。由此序列构成的二叉搜索树,其左子树上有叉搜索
13、树,其左子树上有i个结点,而右子个结点,而右子树上有树上有n-i-1个结点。个结点。设设p pi i(n)(n)是在一棵有是在一棵有n n结点,其左子树上有结点,其左子树上有i i个结点,而右子树上有个结点,而右子树上有n-i-1n-i-1个结点的二叉个结点的二叉搜索树上以等概率进行搜索,成功搜索一搜索树上以等概率进行搜索,成功搜索一个关键字的平均比较次数。个关键字的平均比较次数。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 设设p(n)p(n)是在一棵有是在一棵有n n个结点的二叉搜索树上个结点的二叉搜索树上成功搜索一个关键字的平均比较次数成功搜
14、索一个关键字的平均比较次数。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 可用归纳法证明:可用归纳法证明:随机情况下,二叉搜索随机情况下,二叉搜索树树操作的平均操作的平均时间为时间为O(logO(log2 2n)n)。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.2二叉平衡树二叉平衡树南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.2.1二叉平衡树的定义二叉平衡树的定义定义定义定义定义7.27.2 二叉平衡树又称二叉平衡树又称二叉平衡树又称二叉平衡树又
15、称AVLAVL树树树树它它或或者者是是一一棵棵空空二二叉叉树树,或或者者是是具具有有下下列列性性质质的的二二叉树:叉树:(1)其根的左、右子树高度之差的绝对值不超过)其根的左、右子树高度之差的绝对值不超过1;(2)其根的左、右子树都是二叉平衡树。)其根的左、右子树都是二叉平衡树。结结点点的的平平衡衡因因子子定定义义为为该该结结点点的的左左子子树树的的高高度度减减去去右子树的高度。右子树的高度。AVLAVL二二二二叉叉叉叉搜搜搜搜索索索索树树树树既既是是二二叉叉搜搜索索树树又又是是AVL树树。在在下下面面的的讨讨论论中中,二二叉叉平平衡衡树树(AVL树树)是是指指AVL二二叉叉搜索树。搜索树。南
16、京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 9.2.2二叉平衡树类二叉平衡树类templatestructAVLNodeAVLNode(constT&x)element=x;lChild=rChild=NULL;bFbF=0;=0;Telement;intbFintbF;AVLNode*lChild,*rChild;南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 templatetemplateclassclass
17、AVLTreeAVLTree:public:publicDynamicSetDynamicSet public:public:AVLTree()root=NULL;ResultCodeSearch(T&x)const;ResultCodeInsert(T&x);ResultCodeRemove(T&x);南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 private:private:AVLNode*root;ResultCodeInsert(AVLNode*&p,T&x,bool&unBalanced);voidLRotation(AVLNode*&
18、s,bool&unBalanced);voidRRotation(AVLNode*&s,bool&unBalanced);南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 7.2.3 二叉平衡树的平衡旋转二叉平衡树的平衡旋转 分别插入:分别插入:2525,3535,1414,4444南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 插插插插入入入入2525:从从根根到到25的的路路径径上上,所所有有结结点点的的平平衡衡因因子子均均为为0。插插入入新新元元素素25后后,这这棵棵树树仍仍然然是是二二叉叉平平衡树,但
19、整棵树高度加衡树,但整棵树高度加1。插插插插入入入入3535:从从根根到到35的的路路径径上上,36的的平平衡衡因因子子不不为为0,新新元元素素35被被插插在在36的的较较矮矮的的子子树树上上。插插入入后后,该树仍然是二叉平衡树。该树仍然是二叉平衡树。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 插插插插入入入入1414:从从根根到到14的的路路径径上上,12的的平平衡衡因因子子不不为为0,新新元元素素14被被插插在在12的的较较高高的的子子树树上上,即即14被被插插在在12的的右右子树的左子树上,插入后,该树不再是二叉平衡树。子树的左子树上,插入
20、后,该树不再是二叉平衡树。插插插插入入入入4444:从从根根到到44的的路路径径上上,43和和56的的平平衡衡因因子子都都不不为为0,其其中中56是是离离44最最近近的的,平平衡衡因因子子值值不不为为零零的的结结点点。新新元元素素44被被插插在在56的的较较高高的的那那棵棵子子树树上上,即即44被被插插在在56的的左左子子树树的的左左子子树树上上。插插入入后后,该该树树不不再再是是二二叉叉平平衡树。衡树。南京邮电大学计算机学院南京邮电大学计算机学院陈慧南陈慧南 2006 2006年年9 9月月 假定新结点假定新结点*q插在结点插在结点*s的左子树上的情况的左子树上的情况(1)新新结结点点*q已
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构A 数据结构 07
限制150内