Tree(1)--树的基本概念

来源:互联网 发布:台州五轴编程工资 编辑:程序博客网 时间:2024/06/03 20:08

1.树的定义及术语

有根树(rooted tree):一棵有根树,简称为树T,他是n个结点的有限集合。当n=0时,T称为空树,否则T是非空树,记作
这里写图片描述
其中,r是T的一个特殊结点,称为根。T1,T2,T3…Tm是除了r之外的其他结点构成的互不相交的m(m>0)个子集,每个子集合也是一棵树,称为根的子树(subtree)。每课子树的根结点有且仅有一个直接前驱,但可以有0个或者多个直接后继结点。m称为r的分支数。
这里写图片描述

结点(node):它包含数据项及指向其他结点的分支。
结点的度:结点所拥有的子树的棵树。A的度为3,E的度为2,K、L、F、G、M、I、J的度为0。
叶子结点:度为0的结点{K,L,F,G,M,I,J}
分支结点(非终端结点):除叶子结点外的其他结点{A,B,C,D,E,H}
子女结点:若x有子树,子树的根结点即为x的子女。A有3个子女
父结点:若x有子树,x即为子女的父结点
兄弟结点(sibling): 同一父结点的子女互称兄弟
祖先结点(ancestor):从根结点到该结点所经分支上的所有结点,L的祖先为A,B,E
子孙结点(descendant):某一结点的子女以及这些子女的子女,B的子孙为E,F,K,L
结点所处的层次(level)/结点的深度:简称结点的层次,即从根到该结点所经路径上的分支条数。根结点在第一层,他的子女在第二层。任一结点的层次为它的父结点的层次加一
树的深度(depth):距离根结点最远的结点即为树的深度。空树的深度为0,只有一个根结点的树的深度为1,如图所示的树的深度为4
树的高度(height):数值等于树的深度
树的度(degree):结点的度的最大值,如图所示的树的度为3
有序树(ordered tree):结点的各个子树是有次序的
无序树:

2. ADT of Tree

template <class Type> class Tree {public:    Tree ( );                  ~Tree ( );    position Root ( );    BuildRoot ( const Type& value );    position FirstChild ( position p );    position NextSibling ( position p);    position Parent ( position p );    Type Retrieve ( position p );        int InsertChild ( const position p,const Type &value );    int DeleteChild ( position p, int i );    void DeleteSubTree ( position t );    int IsEmpty ( );}
原创粉丝点击