(一)数据结构中的树(上):树与树的表示

什么是树?

客观世界中许多事物存在的层次关系:人类社会家谱、社会组织结构、图书信息管理等。层次组织在管理上更高效。

定义:n(n\geqslant 0)个结点构成的有限集合。当n=0 时,称为空树。

性质(对于任何一个非空树):

注意:

子树是不相交的、出了根节点外,每个结点有且仅有一个父节点、一个N个结点的树有N-1条边

  • 树中有一个称为“根”的特殊结点,用r表示
  • 其余结点可分为m(m>0)个互不相交的有限集T{_1},T{_2},\cdots ,T{_m},其中每个集合本身又是一棵树,称为原来树的“子树”

 树的一些基本用语:

  1. 结点的度:结点的子树个数(A的度为3,B的度为2,C的度为1等等)
  2. 树的度:树的所有结点中的最大的度数(A和D的度数最大都为3,因此树的度为3)
  3. 叶结点:度为零的结点(F、L、H、M、J、K都是度为0的结点)
  4. 父结点:有子树的结点是其子树的根节点的父结点
  5. 子结点:如果A是B的父结点,那么B就是A的子结点
  6. 兄弟结点:具有同一父结点的各结点彼此是兄弟结点
  7. 路径和路径长度:路径所包含边的个数为路径的长度
  8. 祖先结点:沿树根到某一结点路径上的所有结点都是这个结点的祖先结点
  9. 子孙结点:某一结点的子树中的所有结点是这个结点的子孙
  10. 结点的层次:规定根节点在1层,其它任一结点的层数是其父结点的层数加1
  11. 树的深度:树中所有结点中的最大层次即树的深度

树的表示:

儿子兄弟表示法:

    typedef struct TNode *Tree;
    typedef Tree BinTree; /* 二叉树类型 */
    struct TNode{ /* 树结点定义 */
        ElementType Data; /* 结点数据 */
        BinTree Left;     /* 指向左子树 */
        BinTree Right;    /* 指向右子树 */
    };

猜你喜欢

转载自blog.csdn.net/qq_38358499/article/details/84784183
今日推荐