在讲到集合的时候,很容易让人想到的是数组和链表。而后你们会讨论这两种数据结构的差别。可是根据指定的内容在集合中查找,这两种数据结构的性能却没有区别都是O(n),如何提升在集合中检索指定内容数据的性能,是咱们在程序开发中面临的问题。数组
例,根据{45,53,45,12,24,90}来构建二叉排序树数据结构
二叉排序树的删除规则:设,
*f为指向被删除结点的双亲结点的指针
*p为指向被删除结点的指针性能
若*p是叶子结点,那么就直接删除spa
若删除的*p结点只有左子树或是右子树,删除*p结点以后直接将子树挂在*f结点上便可,成为*f结点的子树3d
若删除的*p结点同时拥有左、右子树,删除节点有两种可行性操做:指针
若*p结点是*f的左子结点blog
第二种操做:使用二叉排序树的中序遍历获得的结点顺序,肯定*p结点的直接前驱或直接后继结点,将该结点移到*p结点位置排序
该结点知足如下特性:图片
接下来以*p结点的前驱结点进行讨论:开发
接下来以*p结点的后继结点进行讨论:
上述是在*p是*f的左孩子的前提下进行的讨论,接下来是以*p是*f的右孩子进行讨论,直接上图了
第二种转换: