搞懂树结构
1.什么是树结构
树结构是一种非常重要的非线性结构,反应了数据元素之间的层次关系和分支关系。
树的表示方法
- 树型表示法
- 文氏图表示方法
- 凹入图表示法
- 广义表表示法
(A(B1(C1,D1,E1),B2(C2),B3)
2.树的分类
根据树中节点的各子树从左到右是否有次序,能否交换分为
- 有序树
- 无序数
3.二叉树
二叉树并非是树的特殊情形,它和度数为2的有序树是两种不同的数据结构。
3.1二叉树的基本形态
- 空二叉树
- 只有一个根节点
- 根节点只有左子树
- 根节点只有右子树
- 根节点既有左子树又有右子树
3.2二叉树的存储结构
二叉树的存储结构可分为顺序存储和链式存储。
顺序存储
二叉树的顺序存储结构就是把二叉树的所有结点按照一定的次序顺序存储到数组中,数组中只存储结点的值,结点之间的逻辑关系由数组中下标的顺序来体现。如果不是完全二叉树也会看成完全二叉树存入数组,空的子树存入空值。
节点的逻辑关系
顺序二叉树对于完全二叉树而言,既简单又节省存储空间,而对于一般二叉树存储了很多空节点会造成大量的存储空间的浪费。
链式存储
顺序存储一般二叉树会造成大量存储空间的浪费,因此,一般二叉树采用链式存储的方式。
存储节点:每个节点由数据域和两个指针域组成,指针分别指向左儿子和右儿子,如果左儿子为空,则左指针为null。
public class BinNode{
//节点对象
private Object element;
private BinNode left;
private BinNode right;
public BinNode