公司动态
满二叉树的叶子结点计算可以结合树的深度、总节点数两个维度
满二叉树的叶子结点计算可以结合树的深度、总节点数两个维度通过不同公式推导一、已知满二叉树的深度为hhh时的计算方法满二叉树的核心特征是每层节点数都达到该层的最大值其中第kkk层的最大节点数为2k−12^{k-1}2k−1而满二叉树的所有叶子结点都集中在最底层第hhh层。因此叶子结点总数为最底层的节点数n02h−1n_0 2^{h-1}n02h−1以深度为7的满二叉树为例代入公式可得27−1642^{7-1}6427−164即叶子结点总数为64。二、已知满二叉树的总节点数为nnn时的计算方法公式直接计算满二叉树不存在度为1的结点仅包含度为0的叶子结点n0n_0n0和度为2的分支结点n2n_2n2因此总节点数满足nn0n2n n_0 n_2nn0n2。结合二叉树通用性质n0n21n_0 n_2 1n0n21将n2n0−1n_2 n_0 -1n2n0−1代入总节点数公式可得nn0(n0−1)n n_0 (n_0 -1)nn0(n0−1)整理后得到叶子结点计算公式n0n12n_0 \frac{n1}{2}n02n1结合深度推导深度为hhh的满二叉树总节点数满足n2h−1n2^h -1n2h−1变形可得深度hlog2(n1)h log_2(n1)hlog2(n1)将其代入“已知深度求叶子结点”的公式n02h−1n_02^{h-1}n02h−1最终也可得到n0n12n_0\frac{n1}{2}n02n1和上述结果一致。三、已知满二叉树的度为2的结点数n2n_2n2时的计算方法对于所有二叉树都满足叶子结点数等于度为2的结点数加1即n0n21n_0 n_2 1n0n21该性质和度为1的结点数无关。而满二叉树的n10n_10n10分支结点全部为度为2的结点因此可以直接通过n2n_2n2计算叶子结点数。例如已知满二叉树有31个分支结点那么叶子结点数为311323113231132总节点数为313263313263313263。总结满二叉树的叶子结点计算可以根据已知条件选择对应方法已知深度时用n02h−1n_02^{h-1}n02h−1计算已知总节点数时用n0n12n_0\frac{n1}{2}n02n1计算已知度为2的结点数时用n0n21n_0n_21n0n21计算三类方法推导结果互通均可准确得到叶子结点总数。总节点数为127的满二叉树叶子数计算可以通过三种方法推导最终结果均为64方法一通过满二叉树叶子数与总节点数的关系计算满二叉树不存在度为1的节点仅包含度为0的叶子节点n0n_0n0和度为2的分支节点n2n_2n2因此总节点数满足nn0n2n n_0 n_2nn0n2。结合二叉树通用性质n0n21n_0 n_2 1n0n21将n2n0−1n_2 n_0 -1n2n0−1代入总节点数公式可得nn0(n0−1)n n_0 (n_0 -1)nn0(n0−1)整理后得到叶子结点计算公式n0n12n_0 \frac{n1}{2}n02n1代入n127n127n127可得n01271264n_0 \frac{1271}{2}64n02127164。方法二先求深度再通过层节点数计算深度为hhh的满二叉树总节点数满足n2h−1n2^h -1n2h−1代入n127n127n127可得2h−1127 ⟹ 2h128 ⟹ h72^h -1127 \implies 2^h128 \implies h72h−1127⟹2h128⟹h7满二叉树的叶子结点全部集中在最底层第hhh层而二叉树第kkk层的最大节点数为2k−12^{k-1}2k−1因此叶子结点总数为第7层的节点数n027−12664n_02^{7-1}2^664n027−12664方法三通过度为2的节点数计算结合满二叉树n10n_10n10的特性总节点数nn0n2n n_0 n_2nn0n2且n0n21n_0 n_21n0n21因此度为2的节点数n2n−n0n_2 n-n_0n2n−n0代入性质公式可得n0(n−n0)1n_0(n-n_0)1n0(n−n0)1和方法一推导一致。另外满二叉树的分支节点全部为度为2的节点总分支节点数为总节点数减叶子数此处也可通过n2127−6463n_2127-6463n2127−6463验证n0n2164n_0n_2164n0n2164结果一致。总结总节点数为127的满二叉树通过不同公式推导的叶子结点数均为64核心是利用满二叉树无度为1节点的特性结合二叉树n0n21n_0n_21n0n21的通用性质即可快速计算。