1、设一棵树t中边的集合为,要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。
2、给定n个村庄之间的交通图,若村庄i和j之间有道路,则将顶点i和j用边连接,边上的wij表示这条道路的长度,现在要从这n个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试设计一个解答上述问题的算法,并应用该算法解答如图所示的实例。20分void hospital(adjmatrix w,int n)
/在以邻接带权矩阵表示的n个村庄中,求医院建在何处,使离医院最远的村庄到医院的路径最短。
for (k=1;k<=n;k++)求任意两顶点间的最短路径for (i=1;i<=n;i++)for (j=1;j<=n;j++)
if (w[i][k]+w[k][j]for (j=1;j<=n;j++)求从某村庄i(1<=i<=n)到其它村庄的最长路径。if (w[i][j]>s) s=w[i][j];
if (s<=m) /在最长路径中,取最短的一条。m记最长路径,k记出发顶点的下标。
printf(“医院应建在%d村庄,到医院距离为%d”,i,m);}for}//算法结束。
对以上实例模拟的过程略。各行中最大数依次是9,9,6,7,9,9。这几个最大数中最小者为6,故医院应建在第三个村庄中,离医院最远的村庄到医院的距离是6。
1、对图1所示的连通网g,请用prim算法构造其最小生成树(每选取一条边画一个图)。
3、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历序列。但对于满二叉树,任一结点的左右子树均含有数量相等的结点,根据此性质,可将任一遍历序列转为另一遍历序列(即任一遍历序列均可确定一棵二叉树)。
void pretopost(elemtype pre post,int l1,h1,l2,h2)
/将满二叉树的先序序列转为后序序列,l1,h1,l2,h2是序列初始和最后结点的下标。 }pretopost32..叶子结点只有在遍历中才能知道,这里使用中序递归遍历。
设置前驱结点指针pre,初始为空。第一个叶子结点由指针head指向,遍历到叶子结点时,就将它前驱的rchild指针指向它,最后叶子结点的rchild为空。linkedlist head,pre=null; /全局变量linkedlist inorder(bitree bt)
/中序遍历二叉树bt,将叶子结点从左到右链成一个单链表,表头指针为head //处理第一个叶子结点else //将叶子结点链入链表inorder(bt->rchild中序遍历左子树pre->rchild=null设置链表尾}
return(head); inorder
时间复杂度为o(n),辅助变量使用head和pre,栈空间复杂度o(n)
2023年广东省数据理论加强
1 设一棵树t中边的集合为,要求用孩子兄弟表示法 二叉链表 表示出该树的存储结构并将该树转化成对应的二叉树。2 数组a和b的元素分别有序,欲将两数组合并到c数组,使c仍有序,应将a和b拷贝到c,只要注意a和b数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到c中即可。void un...
2023年河南省数据理论章程
1 假设k1,kn是n个关键词,试解答 试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为k1,k2,kn时,用算法建立一棵以llink rlink 链接表示的二叉查找树。2 若第n件物品能放入背包,则问题变为能否再从n 1件物品中选出若干件放入背包 这时背包可放入物品的重量变为s ...
2023年湖南省数据总结大纲
1 设一组有序的记录关键字序列为 13,18,24,35,47,50,62,83,90 查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。2 对一般二叉树,仅根据一个先序 中序 后序遍历,不能确定另一个遍历序列。但对于满二叉树,任一结点的左右子树均含有数量相等...