作者: 悟剑声 | 来源:发表于2017-06-08 00:30 被阅读5次

    树的定义

    树(Tree):n(n ≥ 0)个结点构成的有限集合。

    • 当n = 0 时,称为空树。
    • 对于任一颗非空树(n > 0),它具备以下性质:
      树中有一个称为"根(Root)"的特殊结点,用r 表示;
      其余结点(与r 相关联的)可分为m(m > 0)个互不相交的有限集T1,T2,...,Tm,其中每个集合本身又是一颗树,称为原来树的"子树(SubTree)"。

    树与非树?

    • 子树是不相交的
    • 除了根结点外,每个结点有且仅有一个父节点
      一颗N个结点的树有N-1条边(我认为可以用构造性的存在性证明或是数学归纳法来证明这一点)

    树的一些基本术语:

    • 结点的度(Degree):结点的子树个数
    • 树的度:树的所有结点中最大的度数
    • 叶结点(Leaf):度为0的结点
    • 父结点(Parent):有子树的结点是其子树的根结点的父结点
    • 子结点(Child):若A结点是B结点的父结点,则称B结点是A结点的子结点;子结点也称孩子结点
    • 兄弟结点(Sibling):具有同一父结点的各结点彼此是兄弟结点
    • 路径和路径长度(Path):从结点n1到nk的路径为一个结点序列n1,n2,...,nk,ni是ni+1的父结点,路径所包含的边的个数为路径的长度
    • 祖先结点(Ancestor):沿树根到某一结点路径上的所有结点都是这个结点的祖先结点
    • 子孙结点(Descendant):某一结点的子树中的所有结点都是这个结点子孙
    • 结点的层次(Level):规定根结点在1层,其它任一结点的层数时其父节点的层数加1
    • 树的深度(Depth):树中所有结点中的最大层次是这棵树的深度

    树的表示

    • 儿子-兄弟表示法
    • 括号表示法

    树的算法实现

    typedef char ElementType;
    typedef struct Node{   
        ElementType data;   
        struct Node * child;   
        struct Node * sibling;   
    } TreeNode;
    
    链接:

    相关文章

      网友评论

          本文标题:

          本文链接:https://www.haomeiwen.com/subject/eysgfxtx.html