这是我参与更文挑战的第24天,活动详情查看:更文挑战
什么是树
树,在我们数据结构中的树是一种分层数据的抽象模型。类似于现实中的树有很多枝桠,也类似于家谱,或者说公司的组织架构图等等。
它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
树的特点
- 每个节点有零个或多个子节点;
- 没有父节点的节点称为根节点;
- 每一个非根节点有且只有一个父节点;
- 除了根节点外,每个子节点可以分为多个不相交的子树。
节点的属性
- 深度:节点的深度取决于它的祖先节点的数量,有几个祖先节点其深度就是几。
树的高度 树的高度取决于所有节点深度的最大值。一颗树也可以被分解成层级。根节点在第0层,它的子节点在第一层,以此类推。
树的种类
- 无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树。
- 有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树。
- 二叉树:每个节点最多含有两个子树的树称为二叉树。
- 满二叉树:叶节点除外的所有节点均含有两个子树的树被称为满二叉树。
- 完全二叉树:除最后一层外,所有层都是满节点,且最后一层缺右边连续节点的二叉树称为完全二叉树。
- 哈夫曼树(最优二叉树):带权路径最短的二叉树称为哈夫曼树或最优二叉树。权值较大的节点离根较近。
术语
- 路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。
- 结点的权及带权路径长度:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。
- 树的带权路径长度:树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。
未完待续。。。