数据结构与算法AVL树类的C++实现
作者:网络转载 发布时间:[ 2016/9/29 14:17:03 ] 推荐标签:测试开发技术 C++ 算法
/****************************************************************
* 函数名称:rotateWithLeftChild(AvlNode *t)
* 功能描述: 将当前结点进行单旋转,用于左左插入的时候
* 参数列表: t是指向当前结点的指针
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::rotateWithLeftChild(AvlNode * & k2)
{
cout << "左单旋转" << endl;
AvlNode * k1 = k2->left;
k2->left = k1->right;
k1->right = k2;
k2->height = max(height(k2->left), height(k2->right)) + 1;
k1->height = max(height(k1->left), k2->height) + 1;
k2 = k1;
}
/****************************************************************
* 函数名称:rotateWithRightChild(AvlNode *t)
* 功能描述: 将当前结点进行单旋转,用于左右插入的时候
* 参数列表: t是指向当前结点的指针
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::rotateWithRightChild(AvlNode * & k1)
{
cout << "右单旋转" << endl;
AvlNode * k2 = k1->right;
k1->right = k2->left;
k2->left = k1;
k1->height = max(height(k1->left), height(k1->right)) + 1;
k2->height = max(height(k2->right), k1->height) + 1;
k1 = k2;
}
/****************************************************************
* 函数名称:doubleWithLeftChild(AvlNode *t)
* 功能描述: 将当前结点进行双旋转,用于左右插入的时候
* 参数列表: t是指向当前结点的指针
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::doubleWithLeftChild(AvlNode * & k3)
{
cout << "**********************" << endl;
cout << "左双旋转: " << endl;
rotateWithRightChild(k3->left);
rotateWithLeftChild(k3);
cout << "**********************" << endl;
}
/****************************************************************
* 函数名称:doubleWithRightChild(AvlNode *t)
* 功能描述: 将当前结点进行双旋转,用于右左插入的时候
* 参数列表: t是指向当前结点的指针
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::doubleWithRightChild(AvlNode * & k1)
{
cout << "**********************" << endl;
cout << "右双旋转: " << endl;
rotateWithLeftChild(k1->right);
rotateWithRightChild(k1);
cout << "**********************" << endl;
}
/****************************************************************
* 函数名称:int height(AvlNode *t) const
* 功能描述: 获得当前结点t的高度
* 参数列表: t是指向当前结点的指针
* 返回结果:无
*****************************************************************/
template<typename Comparable>
int AvlTree<Comparable>::height(AvlNode * t) const
{
return (t == NULL) ? -1 : t->height;
}
/****************************************************************
* 函数名称:biggerOrderPrintTree()
* 功能描述: 按照从大到小的顺序输出该树结点
* 参数列表: 无
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::biggerOrderPrintTree()
{
cout << "从大到小输出:";
biggerOrderPrintTree(root);
cout << endl;
}
/****************************************************************
* 函数名称:biggerOrderPrintTree(AvlNode * t)
* 功能描述: 按照从大到小的顺序输出该树结点
* 参数列表: 无
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::biggerOrderPrintTree(AvlNode * t)
{
if(t != NULL){
biggerOrderPrintTree(t->right);
cout << t->element << " ";
biggerOrderPrintTree(t->left);
}
}
/****************************************************************
* 函数名称:lessOrderPrintTree()
* 功能描述: 按照从小到大的顺序输出该树结点
* 参数列表: 无
* 返回结果:无
*****************************************************************/
template<typename Comparable>
void AvlTree<Comparable>::lessOrderPrintTree()
{
cout << "从小到大输出:";
lessOrderPrintTree(root);
cout << endl;
}
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南