- 博客(5)
- 收藏
- 关注
原创 将二叉排序树转换成排序双向链表,并返回最左边的结点(不建新结点)
二叉排序树是带根结点的二叉树,其内部结点各自存储一个关键字(以及可选的相关值),并且各自具有两个可区分的子树,通常表示为左和右。该树还拥有二分搜索的属性,该属性声明每个结点中的关键字必须大于或等于左子树中存储的任何关键字,并且小于或等于右子树中存储的任何关键字.二叉树转换成双向链表,中序遍历正好是值从小到大,只需用一个p指针保存中序遍历的前一个结点。因为是中序遍历,遍历顺序就是双线链表的建立顺序;每一个结点访问时它的左子树肯定被访问过了,所以放心大胆的改它的left指针,不怕树断掉;同理,p指向的结点保
2021-12-25 15:26:49 473
原创 利用给定的序列构造二叉排序树,并遍历
二叉排序树定义:一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。以下是c语言代码实现:来一个结点,则先判断该结点是否已经存在,在SearchchildNode中判断(存不存在都返回),如果存在则返回该结点的位置,在Insert中呢判断一下二者相等(新来的和返回的这个一样),则不插入,如果不存在,则返回该结点
2021-11-30 19:13:45 3170
原创 C代码实现将一颗树转换成二叉树(给定树)
将树转换成二叉树的方法:1.加线。在所有的兄弟结点之间加一条线。2.去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线。3.调整。以树的根结点为轴心,将整个树调节一下(第一个孩子是结点的左孩子,兄弟转过来的孩子是结点的右孩子)具体实现过程:本例规定是一个最多五叉的树(用*next[n]表示,n=5),且给定树的形状,先对该树层序遍历,利用队列实现,每个节点都是从0到4遍历next[i],只要不空,则入队next[i],遍历的序列为ABCDEFGHIJK,
2021-11-20 22:09:43 3326 2
原创 散列函数的构造方法:除留余数-链地址法
相同散列地址的记录链成一个单链表,m个散列地址就设m个单链表的表头指针存储起来,形成一个动态的结构例子:关键字{19,14,23,1,68,20,84,27,55,11,10,79}Hash(key)=key mod n(也就是对key取余)(n通常取散列表长度)设散列函数为 Hash(key)=key%13则可得结果:用c实现://c语言代码#include <stdio.h>#include <stdlib.h>#define m 13//...
2021-11-11 17:30:18 1380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人