1、设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。2、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历序列。但对于满二叉树,任一结点的左右子树均含有数量相等的结点,根据此性质,可将任一遍历序列转为另一遍历序列(即任一遍历序列均可确定一棵二叉树)。
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)3、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。若非二叉排序树,则置flag为false。#define true 1#define false 0typedef struct node
datatype data; struct node *llink,*rlink;} btree;void judgebst(btree t,int flag)
/判断二叉树是否是二叉排序树,本算法结束后,在调用程序中由flag得出结论。 /不是完全二叉树judgebst(t->rlink,flag);/中序遍历右子树。
//judgebst算法结束。
2023年湖南省数据整理基础
for j 0 j p i sum将一行元素之和存入一维数组。for i for i 0 i sum p i p i p k p k sum 交换一维数组中元素之和。if for i free p 释放p数组。translation 算法分析 算法中使用选择法排序,比较次数较多,但数据交换 移动 较...
2019湖南省数据结构考
1 设给定问题的规模为变量n,解决该问题的算法所需时间为tn o f n tn表示式中记号o表示 a a 一个数量级别b 一个平均值c 一个最大值d 一个均方值。2 数据结构研究的内容是 d a 数据的逻辑结构b 数据的存储结构。c 建立在相应逻辑结构和存储结构上的算法d 包括以上三个方面。3 串的...
2023年湖南省数据分析深入
1 设一组有序的记录关键字序列为 13,18,24,35,47,50,62,83,90 查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。2 我们用l代表最长平台的长度,用k指示最长平台在数组b中的起始位置 下标 用j记住局部平台的起始位置,用i指示扫描b数组...