离散数学——树


本人是新人,对树的概念还是不太清楚,故写个学习概念的文章,来帮助自己学习树这一数据结构。


定义1.树是没有简单回路的连通无向图。
定理1.一个无向图是树当且仅当在它的每对顶点间存在唯一简单回路。
定义2.有根树是指一个顶点(指所有节点)作为根并且每条边的方向都离开根的树。
离散数学——树_第1张图片
图片出处

关于孩子,父母与深度和高度什么的,用两张图就能解决的就不多赘述:
离散数学——树_第2张图片
图片出处
离散数学——树_第3张图片
图片出处

定义3.若有根树的每个内点(指除了叶之外的所有点)都有不超过m个孩子,则它为m叉树,若该树的每个内点都恰好有m个孩子,则称它为满m叉树。把m = 2的m叉树称为二叉树。

如第一幅图就是个二叉树。
下图就是个满二叉树:
离散数学——树_第4张图片
图片出处

有序根树的每个内点的孩子都从左到右依次递增:
离散数学——树_第5张图片
自己p的图

在有序二叉树中,左边的更小值称为左子,右边的较大值称为右子:
离散数学——树_第6张图片
图片出处
注意,此树必须有序。

定理2.带有n个顶点的树含有n - 1条边。
定理3.带有i个内点的满m叉树含有n = m * i + 1个顶点。
ps:根是内点,除非它是图中唯一的顶点,在这种情况下,它也是叶。

定理4.一个满m叉树若有:
(i)n个顶点,则有i = (n-1) / m个内点和l = [(m-1) * n + 1] / m个叶;
(ii)i个内点,则有n = m * i + 1个顶点和l = (m-1) * i + 1个叶;
(iii)l个树叶,则有n = (m * l - 1) / (m - 1)个顶点和i = (l - 1) / (m - 1)个内点;

平衡m叉树:表示某树T的所有叶大约在同一层上(+-1):
离散数学——树_第7张图片
图片出处
这就是一个平衡二叉树,因为它的所有叶都在2层与3层上。
同理一个满二叉树也是个平衡二叉树。

在m叉树中叶数的界:常常用到m叉树中叶树的上界。定理5用m叉树的高度给出了一个这样的界。

定理5.在高度为h的m叉树中最多有m^h个叶;

推论1.若一颗高度为h的m叉树带有l个叶,则h >= 向上取整logm(l)。若这棵树是满的和平衡的,则h = 向上取整logm(l)。

参考资料:
《离散数学及其应用(第七版)》

你可能感兴趣的:(数据结构)