目录
树结构是一类重要的非线性数据结构。直观来看,树是以分支关系定义的层次结构。树在计算机领域中得到广泛应用,尤二叉树最为常用。如在操作系统中,用树来表示文件目录的组织结构。
树的定义
树(Tree)是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。它或为空树(n= 0); 或为非空树。
把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。对于非空树T:
(1)有且仅有一个称之为根的结点,根节点没有前驱结点。
(2)除根结点以外的其余结点可分为 m(m>0)个互不相交的有限集Ti , T2 , …Tm,其中每一个集合本身又是一棵树,并且称为根的子树。
特点:
当n>0时,树中至少有一个结点——根;
树中各子树是互不相交的集合。
树的结构定义是一个递归的定义,即在树的定义中又用到树的定义,它道出了树的固有特性。
树的表示方法
树形表示方法:
嵌套集合表示法(文氏图表示法)
凹入表表示法(线段的伸缩关系来表示)
广义表表示法(括号表示法)
树的基本术语
结点(node)
结点的度(degree)
叶子(leaf)
度为0的结点
孩子(child)
双亲(parents)
孩子结点的上层结点叫该结点的双亲
兄弟(sibling)
树的度
结点的层次(level)
从根结点算起,根为第一层,它的孩子为第二层……
深度(depth)
森林(forest)
森林n(n>0)个互不相交的树的集合称为森林。只要把树的根节点删去就成了森林。
反之,只要给n棵独立的树加上一个节点,并把这n棵树作为该节点的子树,则森林就变成了一棵树。
孩子节点、双亲节点和兄弟节点
在一棵树中,每个节点的直接后继,被称作该节点的孩子节点。相应地,该节点被称为孩子节点的双亲节点。
具有同一双亲的孩子节点互为兄弟节点。
子孙节点和祖先节点
在一棵树中,一个节点的所有子树中的节点称为该节点的子孙节点。
从根节点到达一个节点的路径上经过的所有节点被称为该节点的祖先节点。
节点的层次和树的高度
节点的层次从树根开始定义,根节点为第一层,它的孩子节点为第2层,依次类推,一个节点所在的层次为其双亲节点所在的层次加1.
树中节点的最大层次称为树的高度(或树的深度)。
有序树和无序树
若树中各节点的子树是按照一定的次序从左到右安排的,且相对次序是不能随意变换的,则称为有序树,否则称为无序树。