- 博客(7)
- 收藏
- 关注
原创 AVLTree——(高度)平衡二叉搜索树
如果插入后父亲的平衡因子为1/-1,证明原来其没有子节点,插入了一个子节点导致平衡因子加或者减1,这时导致了其高度的改变,并且可能影响了父亲节点的祖先节点,需要继续向上更新平衡因子:如果父亲节点是父亲节点的父亲节点的右/左,就把父亲节点的父亲节点的平衡因子加/减1,如果运算后其平衡因子为0,则判断结束,因为不会继续向上影响,如果为1/-1,则继续向上更新平衡因子,如果为2/-2,则说明在此节点的位置开始不平衡,则对此节点进行旋转操作,操作后二叉树平衡。当新插入节点在较高左子树的右侧时,
2024-09-30 17:32:41 546
原创 BSTree——二叉搜索树
二叉搜索树的两种模型,key模型和key/value模型,分别用与判断key是否存在和根据key查找对应value,二者再实现上相近,下面以key/value模型为例。
2024-09-29 17:54:18 290
原创 C++——继承
当父类和子类同时有同名成员时,不会报错, 子类成员会隐藏(重定义)父类成员,想调用父类成员需指定使用父类成员(Person::)*注意:子类和父类的重名函数只构成重定义(隐藏),不构成重载,因为重载要求在同一作用域五、派生类的默认成员函数派生类的构造函数必须(默认)调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认的构造函数,则必须在派生类构造函数的初始化列表中显式调用。派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。
2024-09-22 10:17:56 598
原创 C++ STL容器——string
我们开始学习C++的一个重要部分,C++标准模板库(STL)。今天,我们就从STL容器——string开始吧。
2024-09-19 14:46:51 332
原创 堆排序---从堆的概念开始介绍
将原堆的根与两个子堆的根中较小(大)的比较,若大于则交换,交换后再与其两个子堆的根中较小(大)的比较,大于交换,循环往复,直到其小于两个子堆的根,或者到达叶子节点。由于堆是由数组表示的,当完成对一个完全二叉树建堆后,把根元素与数组的最后一个元素交换,再把数组长度减小1,再建堆,循环往复。堆常用数组表示,数组的下标为堆的编号-1,由此可以利用完全二叉树的数学关系,通过一个节点找到它的父亲、左右儿子,来遍历整个堆。这样,9为根,其两个子树仍然是小堆,符合向下调整算法,循环往复,实现数值的从大到小排序。
2024-03-30 23:34:17 494 3
原创 树的简要概念和性质
左孩子,右孩子,双亲,兄弟:树中一个结点的子树的根结点称为这个结点的孩子。在二叉树中,左子树的根称为左孩子,右子树的根称为右孩子。一棵深度为k的有n个结点的二叉树,对其结点按从上至下,从左到右的顺序进行编号,如果编号为i的节点与满二叉树中编号为i的节点在二叉树中的位置相同,则称这棵二叉树为完全二叉树。2)若n>1,除根节点意外的节点又可以构成若干子树,因此树是递归定义的。1)有一个特殊元素称为树的根节点,根节点没有前驱节点。叶节点(叶子):度为0的节点,亦可成为终端节点。个,度数为2的节点有。
2024-03-29 22:41:48 333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人