这几天开始准备一个多月后的软考。复习到了二叉树,这方面的知识,我从来没有过,也不知道有什么实际用途,从网上查一下,大概的作用:文件系统和数据库系统一般都采用树(特别是B树)的数据结构数据,主要为排序和检索的效率。
对于现在水平停留在应用层的我来说,好像是用处不大。不过多学习没坏处,为以后打基础吧。做一个总结,把概念梳理一下。
二叉树的概念:
二叉树是每个节点最多有两个子树的有序树。
二叉树的遍历:
所谓遍历是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。
⑴ 中序序列
中序遍历二叉树时,对结点的访问次序为中序序列
中序遍历上图所示的二叉树时,得到的中序序列为:
D B A E C F
⑵ 先序序列
先序遍历二叉树时,对结点的访问次序为先序序列
先序遍历上图所示的二叉树时,得到的先序序列为:
A B D C E F
⑶ 后序序列
后序遍历二叉树时,对结点的访问次序为后序序列
后序遍历上图所示的二叉树时,得到的后序序列为:
D B E F C A
⑷层序遍历二叉树的操作定义为:若二叉树为空,则退出,否则,按照树的结构,从根开始自上而下,自左而右访问每一个结点,从而实现对每一个结点的遍历
层序遍历上图所示的二叉树时,得到的层序序列为:
A B C D E F
几种特殊的二叉树:
查找二叉树:
特点:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别为二叉排序树。
最优二叉树:霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。
线索二叉树:线索二叉树能线性地遍历二叉树,从而比递归的 中序遍历更快。使用线索二叉树也能够方便的找到一个节点的父节点,这比显式地使用父亲节点指针或者栈效率更高。
平衡二叉树:平衡二叉树(BalancedBinary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列 1是根节点 F(n-1)是左子树的节点数量 F(n-2)是右子数的节点数量。