标签:结点 复习 队列 孩子 期末 二叉树 front 数据结构 rear
前言:
我的数据结构学的和其他人不太一样,很早就开始自己看了,不过那时学的不成体系,完全是了解一些概念 树,链表,图等等,OJ上刷一些题。并且这个学期的课还没有上,但是我也开始慢慢能领悟
数据结构的一些精气神了。我学习的进程大概是这样:1.实践中学习,会这个。2. 这个东西了然于胸之后,开始慢慢感受它内部的核心,哲学,一些道的东西。 很享受这样的学习方式。
然而还得考试,所以,赶紧来复习一波哈哈。不得不说,只会做题考试这个层次实在不难...
一、数据结构:
其中,图和树不用多说,集合这样的类型,典型的数据结构就是集合,其次 并查集。 这样的逻辑结构的特点是:元素之间的共性仅仅是属于一个集合而已。
物理储存方式:
这个秒啊,插不到前面去,就插他后面,然后把数据交换。
我的思路:遍历链表,全部反转一遍。然后从尾往头遍历n个长度。
二、队列
参考:https://www.jianshu.com/p/9ba8a65464dd
结论:
0.普通队列,插入元素rear 指针后移,删除元素,front指针后移。 队列满条件:rear 超过数组下标。
1.为了解决假溢出,使用循环队列。
2.循环队列中,插入元素的下一位置为 (rear+1)% maxsize
3.循环队列队满条件也是rear=front
队满时Q.front=Q.rear,这和队空的条件一模一样,无法区分队空还是队满,如何解决呢?有两种办法:一是设置一个标志,标记队空和队满;另一种办法是浪费一个空间,当尾指针Q.rear的下一个位置Q.front是时,就认为是队满。
(Q.rear+1) %Maxsize= Q.front,此时为队满。
队空:Q.front=Q.rear; // Q.rear和Q.front指向同一个位置
队满: (Q.rear+1) %Maxsize=Q.front; // Q.rear向后移一位正好是Q.front
入队:
Q.base[Q.rear]=x; //将元素放入Q.rear所指空间,
Q.rear =( Q.rear+1) %Maxsize; // Q.rear向后移一位
出队:
e= Q.base[Q.front]; //用变量记录Q.front所指元素,
Q.front=(Q.front+1) %Maxsize // Q. front向后移一位
队列中元素个数: (rear-front+maxsize)%maxsize三、二叉树
分类:
1.完全二叉树 2.完美/满二叉树基本结论:
度数=顶点数-1
3、 三种遍历
preorder:中 左 右
inorder: 左 中 右
postorder: 左 右 中
根据遍历方式 确定二叉树,必须要有中序+其他一个
4.森林与二叉树的转换
1、树转换为二叉树 :孩子兄弟表示法
任何一颗树都是二叉树。
左节点 连接兄弟
保留父节点和左孩子的连线,删除与其他孩子的连线。
旋转。
(1)加线。就是在所有兄弟结点之间加一条连线;
(2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线;
(3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。
森林转换为二叉树:
首先,啥是森林?
树的集合。
如图,三棵树集合在一起,组成为一个森林。
转换步骤:
1.把每棵树变成二叉树
2.从第二棵树开始,根节点连接前一颗树的右孩子。
二叉树转化为树:
这就是树变二叉树的逆过程。即孩子兄弟表示法的逆过程。
我们知道,树变二叉树的过程中,树上的一个节点,与他左边第一个孩子保持关系,剩下的孩子都成了第一个孩子的右边一顺溜。
所以拿到一个二叉树,就把他左孩子的右边一顺溜,全部和他连起来。这就是他的孩子。
二叉树转换为树是树转换为二叉树的逆过程,其步骤是:
(1)若某结点的左孩子结点存在,将左孩子结点的右孩子结点、右孩子结点的右孩子结点……都作为该结点的孩子结点,将该结点与这些右孩子结点用线连接起来;
(2)删除原二叉树中所有结点与其右孩子结点的连线;
(3)整理(1)和(2)两步得到的树,使之结构层次分明。
标签:结点,复习,队列,孩子,期末,二叉树,front,数据结构,rear 来源: https://www.cnblogs.com/pengzhangzhi/p/14220329.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。