自学嵌入式第二十五天:数据结构-队列、树
一、队列
队列是只允许一段进行插入,另一端进行删除操作的线性表;
允许插入的一端叫队尾,允许删除的一端叫对头;
先进先出;
用于解决速度不匹配(例如一快一慢),做缓冲用;
二、树
1.树:有n个结点的有限集合,n=0时是空树;
在任意非空树中:有且仅有一个根结点;n>1时又分几个互不相交子树;
结点拥有子树的个数称谓为度;
度为0的(最下面的)叫叶子结点,度不为0的(中间的)叫分支结点;
度最大的结点的度数叫树的度;
树的高度(或深度)从根开始,根为第一层,根的孩子为第二层;
2.二叉树
n个结点的有限集合,集合要么为空树,要么由一个根结点和两颗互不相交的二叉树组成;
每个结点最多两个子树;左子树和右子树是有顺序的,次序不能颠倒;如果结点只有一个子树也要区分左右子树;
斜树:假设所有结点都只有左子树的叫左斜树;
满二叉树:所有分支都存在左右子树,叶子节点都在同一层;
完全二叉树 :按层序编号的二叉树;
特性:
(1)在第i层最多有2的i-1次方(2^(i-1))个结点;
(2)深度为k的二叉树最多有2的k次方-1个结点(2^k-1);
(3)一个二叉树,如果有n0个叶子结点,度数为2的结点数为n0-1;
(4)有n个结点的完全二叉树深度为(logn/long2)+1;
3.树的层序遍历(广度遍历)
4.树的深度遍历(前序,中序,后序)
前序:根左右:先访问根,然后访问左,访问右;
中序:左根右:从根开始(不访问),先访问左,再访问根,最后访问右;
后序:左右根:从根开始(不访问),先访问左,再访问右,最后访问根;