![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
介绍常用数据结构的常用算法
你心如何猜透
如何呢
展开
-
堆(最大堆与最小堆)
下面给出具体的实现代码,以及测试,用c++实现,代码右边有注释。,(为了方便,从1开始存,下标0 号位置不存),因此下标为。2.删除堆顶元素(也就是最大元素),之后仍保持最大堆的特性。由于最大堆的逻辑结构是一棵完全二叉树,因此可以通过。最大堆中的每一个父节点的值均大于其子结点的值。3.插入元素,同样插入后仍保持最大堆的特性。(按照整数除整数计算,例如5/2=2)1.由给定的一个数组序列,创建最大堆。而兄弟结点直接没有什么大小关系。的结点,它的左儿子在。原创 2024-06-28 11:47:01 · 320 阅读 · 0 评论 -
搜索二叉树
当树非空时,其右子树的结点值都大于根节点值,其左子树的结点值都小于根结点值,同样它的左右子树也是搜索树。同时本文也给出了层序生成二叉树,与层序遍历二叉树(广度优先)的操作。4.搜索树中删除指定值的结点,同时也保证树的有序性。3.向搜索树中插入元素(保证树的有序性)2.查找树中的最大与最小元素。1.二叉搜索树查找指定元素。原创 2024-06-25 10:46:25 · 181 阅读 · 0 评论 -
平衡二叉树
c.如果新根结点原来有左子树,则作为旧根结点的右子树。c.如果新根结点原来有右子树,则作为旧根结点的左子树。b.之后对根结点这个整数进行向右旋的操作。b.之后对根结点这个整树进行向左旋的操作。b.原来根结点作为新根结点的左子树。b.原来根结点作为新根结点的右子树。处理: a.对根结点的左子树进行向右旋的操作。处理: a.对根结点的右子树进行向左旋的操作。a.将其根结点的左子树作为新的根结点。1.任意结点的左右子树均为平衡二叉树。a.将其根结点的右子树作为新的根结点。原创 2024-06-27 11:57:09 · 357 阅读 · 0 评论 -
线索二叉树
由于含有n个结点的二叉树,有2n个指针域,然而只有n-1 个指针域被利用,还剩下 n+1 个指针域,是空闲的,而线索化正是利用这些空的指针域,,而当这个结点没有右儿子时,我们让其右指针指向其遍历的下一个元素,即。当这个结点没有左儿子时,我们让其左指针指向遍历的前一个元素,即其。定义全局变量指针pre始终指向遍历结点的前一个遍历的结点。,同时为了区分这个指针存放的是否为线索,设置标志位。的代码实现,在本文中仿照链表定义了一个。,在线索化完成后,我们让头结点。指向中序遍历的最后一个元素。原创 2024-06-21 15:32:27 · 115 阅读 · 0 评论 -
静态链表的算法,包括 链表初始化,头插法,尾插法建立链表,删除链表指定元素,链表的遍历。
/循环终止时即 L[p].cur =0 ,为数据表的结尾。if(L[0].cur==0) //考虑备用链表为空的情况。原创 2024-01-27 10:07:16 · 922 阅读 · 1 评论