Python入门篇-数据结构树(tree)篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.树概述
1>.树的概念
非线性结构,每个元素可以有多个前躯和后继
树是n(n>=0)个元素的集合:
n = 0时,称为空树
树只有一个特殊的没有前驱的元素,称为树的根root
树中除了根结点外,其余元素只能有一个前驱,可以有零个或者多个后继
递归定义:
数T是n(n>=0)个元素的集合。n=0时,称为空树
有且只有一个特殊元素根,剩余元素都可以被划分为m个互不相交的集合T1,T2,T3,...,Tm,而每一个集合都是树,称为T的子树subtree
子树也有自己的根
2>.数的相关术语
结点:
树中的数据元素。
结点的度degree:
结点拥有的子树的数目称为度,记作d(v)。
叶子结点:
结点的度为0,称为叶子结点leaf,终端结点,末端结点。
分支结点:
结点的度不为0,称为非终端结点或分支结点。
分支:
结点之间的关系。
内部结点:
除根结点外的分支结点,当然也不包括叶子结点。
如下图所示,数的度是树内各结点的度的最大值。D结点度最大为3,树的度数就是3.
孩子结点(儿子Child)结点:
结点的子树的根结点称为该结点的孩子。
双亲(父Parent)结点:
一个结点是它各子树的根结点的双亲。
兄弟(Sibling)结点:
具有相同双亲结点的节点。
祖先节点:
从根结点到该结点所有分支上所有的节点,如上图所示:A,B,D都是G的祖先结点。
子孙结点:
结点的所有子树上的结点称为该结点的子孙。B的子孙是D,G,H,I
结点的层次(Level):
根节点为第一层,根的孩子为第二层,以此类推,记作L(v)。
树的深度(高度Depth):
树的层次的最大值。上图的树深度为4.
堂兄弟:
双亲在同一层的结点。
有序树:
结点的子树