没耐心的同学们可以直接拉到最底下看结论,有兴趣的话可以浏览全篇文章
完全二叉树的节点计算基本是几类,要么是求完全二叉树中的叶子节点个数或者度为1或者2的节点的个数。
其实这些问题根本上一一类问题,求解方法也是基本相同的。
先把题列出来:
一棵完全二叉树具有1000个结点,则此完全二叉树有多少个度为2的结点?
完全二叉树699个节点,则叶子节点有多少个?
已知完全二叉树有30个节点,则整个二叉树有多少个度为1的节点?
类似于此类问题,其实用公式都很好解决。先来分析一下公式:
我们假设完全二叉树有N个节点,度为0的节点(叶子结点)为N0 ,度为1的节点为N1 ,度为2的节点为N2 。
我们可以得到公式一:
N = N0 + N1 + N2
求完全二叉树中所有节点的总度数可以得到公式二:
总度数 = 0*N0 + 1*N1 + 2*N2
总度数其实我们可以理解成二叉树的边数之和,除了根节点之外,每个节点头上都有一个边。
所以我们可以得到公式三:
总度数 = N - 1
公式合并可以得到公式四:
N2 = N0 - 1
所以说这类问题,求解出来叶子结点的个数,度为2的节点的个数也就求解出来了(反之亦然)
那么N1呢?
其实熟悉完全二叉树定义的都应该知道,完全二叉树中度为1的节点只会是0个或者1个。
为什么呢?
不理解的话可以从满二叉树分析,满二叉树中只有叶子结点和度为2的节点,
而完全二叉树可以看成是满二叉树最后一层的节点从右至左连续的砍掉一些,
如果砍掉的节点个数是奇数,那么完全二叉树中度为1的结点个数为1
如果砍掉的节点个数是偶数,那么完全二叉树中度为1的结点个数为0
总结:
因为完全二叉树中,叶子结点的数量比度为二的结点的数量多1。
若总结点数为999这样的奇数,999/2 = 499.5 ,那么叶子结点就有500个,度为2的节点为499个,度为1的节点为0个。
若总结点数为1500这样的偶数,1500/2 = 750 ,那么叶子节点就有750个,度为2的节点就有749个,度为1的节点为1个
如果觉得《教你一秒钟得出 N个节点的完全二叉树有多少个叶子节点 / 度为1或2的节点个数》对你有帮助,请点赞、收藏,并留下你的观点哦!