一直对树的概念比较模糊,什么红黑树啊,二叉搜索树等很多没有一个完整的知识体系结构,所以今天准备花一天的时间做一个总结,力求搞明白树的全部知识,不同树之间的体系结构,以及一些常见应用。
树的定义
树的定义有两种方式。 树(tree)是包含n(n>0)个结点的有穷集,其中:
- 每个元素称为结点(node);
- 有一个特定的结点被称为根结点或树根(root);
- 除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树。
树也可以这样定义:树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。
树的相关术语
下图是一棵树