其他分享
首页 > 其他分享> > 【数据结构-树&图】树和图的性质

【数据结构-树&图】树和图的性质

作者:互联网

【注意】不要死记结论,理解推导过程及其背后的思路更重要!

目录

1 树的性质

1.1 非平凡树的性质

【证明】每个结点的度数等于其子结点的个数,即等于与它相连的下一层结点的个数,因此可以推得:某一层的总度数等于下一层结点数的个数。假设一棵树的高度为 h 层,把第 1 层、第 2 层、……、第 h-1 层的总度数加起来,得到的是整棵树中,除了根节点以外的总结点数,因此最后的结果需加 1

【推论】对于二叉树,每个结点有 2 个指针域,一个非空指针域对应一个分支(一条边),因此,n 个结点的二叉树有 n-1 个非空指针域,因而可以得知空指针域 = 2n - (n-1) = n+1

【例】对于二叉树,第 2 层最多有 22-1 = 21 = 2 个结点,第 5 层最多有 25-1 = 24 = 16 个结点;对于三叉树,第 2 层最多有 32-1 = 31 = 3 个结点,第 5 层最多有 35-1 = 34 = 81 个结点

【证明】最多的情况:m 叉树每一层都排满结点,形成一个满 m 叉树,则结点数一共有S = mh-1 + mh-2 + ... + m2 + m1 + m0 = (mh-1)/(m-1)

最少的情况:每一层都只有 1 个结点

【证明】最多的情况:度为 m 的树每一层都排满结点,则结点数一共有S = mh-1 + mh-2 + ... + m2 + m1 + m0 = (mh-1)/(m-1)

最少的情况:h-1 层都只有 1 个结点,最后一层有 m 个结点

思考:为什么以上两条性质的条件看起来类似,但结论不一样?

【证明】要使得高度最小,那么让 m 叉树的每一层都尽可能地排满结点。因此,前 h-1 层排满了所有的结点,结点总个数为S = mh-2 + mh-3 + ... + m2 + m1 + m0 = (mh-1-1)/(m-1);对于最后的第 h 层,可以有 1 个到 mh-1 (全部排满)个结点。

所以,一棵 m 叉树的总结点数的范围为(mh-1-1)/(m-1)+1 ≤ n ≤ (mh-1-1)/(m-1)+mh-1,即(mh-1-1)/(m-1) < n ≤ (mh-1)/(m-1),反解出 h 的范围得到:logm(n(m-1)+1) ≤ h < logm(n(m-1)+1)+1,由于 h 是正整数,因此 h 的取值为logm(n(m-1)+1)(向上取整)

1.2 非空二叉树的性质

【证明】设度为 0, 1 和 2 的结点个数分别为 n0, n1, n2,结点总数为n = n0 + n1 + n2,而总度数为B = n1 + 2n2。由结论“总结点数 = 总度数 + 1”可知,n = B + 1,代入得n0 + n1 + n2 = n1 + 2n2 + 1,化简得n0 = n2 + 1

【例】对于非空二叉树,第 2 层最多有 22-1 = 21 = 2 个结点,第 5 层最多有 25-1 = 24 = 16 个结点

【证明】最多的情况:二叉树每一层都排满结点,形成一个满二叉树,则结点数一共有S = 2h-1 + 2h-2 + ... + 22 + 21 + 20 = 2h-1;最少的情况:每一层都只有 1 个结点

1.3 完全二叉树的性质

【推论】若完全二叉树的一个编号为 i 的结点有父节点且为父节点的左孩子,则父节点编号为 i/2;若为父节点的右孩子,则父节点编号为 (i-1)/2

【证明】设结点 i 位于第 h 层,则从第 1 层到第 h-1 层的结点总数为2h-1-1,若结点 i 位于第 h 层的第一个位置,则i = 2h-1;若结点 i 位于第 h 层的最后一个位置,则i = 2h-1。所以 i 的取值范围为2h-1 ≤ i < 2h,反解出 h 的范围:log2i < h ≤ log2i+1,由于 i 是正整数,因此 i 的取值为log2i(向下取整)+1

【证明】设度为 0, 1 和 2 的结点个数分别为 n0, n1, n2,则结点总数为n = n0 + n1 + n2 = (n2 + 1) + n1 + n2 = 2n2 + n1 + 1,求解出n1 = n - 2n2 - 1,注意到 2n2-1 为奇数,又因为 n1 取值只可能为 0 或 1,因此当 n 为奇数时,n1 为偶数,即为 0;当 n 为偶数时,n1 为奇数,即为 1

【证明 1】考虑一个高为 h-1 的满二叉树,其结点总数为2h-1-1;考虑一个高为 h 的满二叉树,其结点总数为2h-1。那么一棵高为 h 的完全二叉树的结点总数 n 应位于这两者之间:2h-1-1 < n ≤ 2h-1,反解出 h 的范围:log2(n+1) ≤ h < log2(n+1)+1,由于 h 是正整数,因此 h 的取值为log2(n+1)(向上取整)

【证明 2】考虑一个高度为 h-1 的满二叉树,其结点总数为2h-1-1,那么高度为 h 的完全二叉树的最少结点个数就是在上式基础上加 1,即2h-1;而最多结点个数就是将第 h 层全部排满,即2h-1。因此一棵高为 h 的完全二叉树的结点总数 n 应位于这两者之间:2h-1 ≤ n < 2h,反解出 h 的范围:log2n < h ≤ log2n+1,由于 h 是正整数,因此 h 的取值为log2n(向下取整)+1

1.4 森林的性质

设森林 F 对应的二叉树为 B,对应的树为 T,转换规则为“左孩子右兄弟”,则有:

【证明】由“左孩子右兄弟”规则可知,二叉树结点的左孩子是原森林(树)中结点的孩子。而现在森林(树)的叶结点是没有孩子的,因此对应的二叉树结点也没有左孩子

【证明】在 B 中结点 i 是父结点的右孩子,即父结点的右孩子为结点 i,意味着对应的 T 或 F 中父结点和结点 i 是兄弟关系,也就是说,结点 i 左兄弟是父结点

1.5 树、二叉树、森林的遍历性质

2 图的性质

2.1 无向图的性质

【注意】若设图中度为 0, 1, 2, 3 的结点个数分别为 n0, n1, n2, n3,则∑TD = 2e = n1 + 2n2 + 3n3

【证明】非连通图的边最多的情况是:由 n-1 个顶点构成的完全无向图有 n(n-1)/2 条边,此时再加入一条边,将最后一个顶点与其他任意一个顶点连接,就得到了n(n-1)/2 + 1条边,注意此时的无向图从完全图变为了非连通图

【推论 1】(条件、结论倒置)若无向图的边数小于 n-1 条,则必为非连通图

【推论 2】若一个图有 n 个顶点,且有大于 n-1 条边,则此图一定有环(或称为回路)

【注意】“极大连通子图”包含了连通分量所有顶点和所有边;“极小连通子图”包含了连通分量所有顶点和(使得子图连通的)最少边数

2.2 有向图的性质

2.3 存储结构的性质

---EOF---

标签:树和图,结点,连通,mh,二叉树,n1,数据结构,2h,性质
来源: https://www.cnblogs.com/Mount256/p/16538499.html