树是一种非线性的层次逻辑结构,一种递归的数据结构。
结点的层次:从根结点为第一层,以此类推
树的种类
1、·无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;
2、·有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;
3、二叉树:每个节点最多含有两个子树的树称为二叉树;(不是度为2的树),子树有左右之分
4、完全二叉树:对于一棵二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值(即子节点数目为2),且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树,其中满二叉树的定义是所有叶节点都在最底层的完全二叉树;
5、平衡二叉树(AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树;
6、排序二叉树(二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树;
7、霍夫曼树(用于信息编码):带权路径最短的二叉树称为哈夫曼树或最优二叉树;
8、B树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多余两个子树。
树中的节点数等于所有节点的度数加1
非空二叉树的叶子结点数等于度为2的节点数+1
二叉树分为顺序存储和链式存储
完全二叉树和满二叉树采用顺序存储比较合适。
由于顺序存储对空间利用率较低,一般二叉树采用链式存储。用链表存储二叉树,需要3个域:数据域、左指针域、右指针域
含有n 个节点的二叉链表中含有n+1个空链域
二叉树的先序遍历和中序遍历可以唯一确定一棵二叉树
后序和中序
层序和中序
都可以唯一确定一颗二叉树
树的存储既可以采用顺序存储,也可以采用链式存储。
常用的存储结构包括三种:双亲表示法(可以很快找到双亲,找孩子要遍历整个结构)
孩子表示法(可以很快找到孩子)
孩子兄弟表示法:又称二叉树表示法。以二叉树作为树的存储结构。