1.学习总结
1.1树结构思维导图
1.2 树结构学习体会
- 1、树的定义: 树是n个结点的有限集。在任意一个非空的树中:
(1)有且仅有一个特定的称为根的结点;
(2)其余结点可以分成m个互不相交的子集,其中每一个子集又是一个树,称为子树。 - 2、树的存储结构 :数组或链表
- 3、我觉得树这部分挺难,但是挺有意思的,内容比较多,不容易掌握
2.PTA实验作业
题目1:6-4 jmu-ds-表达式树
设计思路
建op栈,将#进栈
建一个树栈tree
while(表达式未结束)
if(ch==操作数)生成一个只有根节点的子树并进栈
if(ch小于op栈顶运算符)
{
tree栈弹出两个结点作为树T的左右子树
再把T放入tree栈
}
if(ch等于栈顶运算符) op出栈
if(ch大于栈顶运算符) ch进op栈
end while
while(op栈顶元素不等于#)
tree栈弹出两个结点作为树T的左右子树
再把T放入tree栈
end while
代码截图
PTA提交列表说明
主要是在创建表达式树的函数中应用创建简易二叉树的函数时将左右子树弄反了= =
题目2:7-1 还原二叉树
设计思路
- 1、创建函数
如果n小于等于0 返回NULL
定义一个字符x=根节点pr[0]
应用函数Fine在In中寻找根节点x的位置并赋给k
递归构造左子树,参数为pre+1,in,k
递归构造右子树,参数为pre+1+k,in+1+k,n-k-1
- 2、求树高度
如果树为空 ,返回高度0
否则
递归求左子树高度
递归求右子树高度
返回左右子树高度较高的一方并加1
代码截图
PTA提交列表说明
递归构造右子树的参数写错了
题目3:7-2 根据后序和中序遍历输出先序遍历
设计思路
- 1、创建函数
如果n小于等于0 返回NULL
令r=后序序列最后一个值即根结点值
b->data=r
遍历中序序列找到根节点的位置并赋给k
递归构造左子树,参数为post,in,k
递归构造右子树,参数为post+k,p+1,n-k-1
- 2、先序遍历
如果树不为空
输出结点值
递归先序遍历左子树
递归先序遍历右子树
代码截图
PTA提交列表说明
一开始树的结点值用的是字符表示,结果有错误,换成整数就好了
3.截图本周题目集的PTA最后排名
PTA排名
我的得分:135
阅读代码
- 1、代码
- 2、功能和优点
这是B-树的查找算法
功能:一般用于数据库的索引,综合效率较高。
优点:外查找的读盘次数不超过树高h,故其时间是O(h);内查找中,每个结点内的关键字数目keynum<m(m是B-树的阶数),故其时间为O(nh)。