摘要: 根插入方法中,我们通过旋转把插入节点带到树根位置。这里,我们考虑如何使得旋转操作使树达到平衡。我们不考虑递归地使用把新近插入节点带到树顶部的单一旋转操作,而考虑把节点从作为树根的孙子(根的两代,也就是与根相距两层)之一的一个位置带到树顶部的两个旋转操作。首先,我们执行一次旋转,使节点成为树根的一个孩 阅读全文
posted @ 2020-05-13 13:45 ~宁静致远~ 阅读(162) 评论(0) 推荐(0)
摘要: 在一个二叉搜索树中删除带有给定关键字的节点。这个删除操作的实现删除在BST中遇到的第一个带有给定关键字v的节点。它从上向下处理,为适当的子树作递归调用,直到要删除的节点位于树根处。然后,它用两棵子树结合的结果取代该节点--右子树中最小的节点成为树根,接着把它的左链接设置成指向左子树。 1 priva 阅读全文
posted @ 2020-05-13 09:05 ~宁静致远~ 阅读(163) 评论(0) 推荐(0)
摘要: 为了防止二叉搜索树中性能大大降低的最坏情况出现,我们可以采用一些方法,如:随机化、发散化和最优化来使其达到平衡。 下面函数使用分区函数在线性时间内使一棵二叉搜索树达到完美平衡状态。我们先划分以便把中值节点放入树根,然后(递归地)对子树执行同样的操作。 1 void balanceR(link& h) 阅读全文
posted @ 2020-05-13 08:41 ~宁静致远~ 阅读(125) 评论(0) 推荐(0)