数据结构本身并不难,我感觉难的是在解决问题的时候选择恰当的模型解决问题。
基本概念和术语
- 树:由n(≥0)个结点组成的有限集合。如果n=0,则称为空树。如果n>0,有且仅有一个特定的节点root,则称为树T的根节点,其余的结点可被划分为m(m≥0)个不相交的子集T_1,T_2,…,T_m,其中的每个子集T_i (i=0,1,2,…,m)都是一棵树,称为T的子树。图中的根结点是A结点。
- 结点:树中的每个元素称为结点
- 结点的度:结点拥有的子树的个数。图中A结点的度为2,B结点的度为3
- 叶子结点:度为0的结点
- 分支结点:度不为0的结点
- 树的度:树中各结点的度的最大值。图中树的度为3
- 孩子结点:一个结点的后继结点。图中B、C是A的孩子结点
- 双亲结点:一个结点称为其后继结点的双亲结点。图中A是B、C的双亲结点
- 兄弟结点:同一个双亲的孩子结点之间互称兄弟结点。B和C互称为兄弟结点
- 祖先结点:从根节点到该结点所经历分支上的所有结点。图中A、B、E是J的祖先结点
- 子孙结点:以某结点为根的子树中的任一结点都称为该节点的子孙结点。图中B结点的子孙结点是 D、E、F、I、J
- 结点层数:从根节点开始,根为第一层、根的孩子为第二层… 直到最后一层。图中A结点层数为1, B、C结点层数为2
- 树的高度(深度):树中结点的最大层次数。图中树的高度(深度)为4
- 有序树和无序树:如果将树中结点的各子树看成从左至右是有次序的,则称该树为有序树,否则是无序树
- 森林:由m(m≥0)棵树组成的集合