zoukankan      html  css  js  c++  java
  • 二叉树的结点计算题

    二叉树的性质:

    • 非空二叉树上叶子结点数等于双分支结点数加1【n0=n2+1】
    • 非空二叉树的第i层上最多有2i-1个结点
    • 高度h的二叉树最多有2h-1个结点
    • 编号为i的结点,左孩子编号2i,右孩子编号2i+1
    • n个结点的完全二叉树高度为log2(n+1)或[log2n]+1
    • 总结点数=总分支数(所有结点度之和)+1

    1、一颗有n个结点的树的所有结点的度数之和为多少?

    所有结点度数之和=n-1

    2、已知一颗完全二叉树的第6层(设根为第1层)有8个叶子结点,则该完全二叉树的结点个数最多是多少?最少是多少?

    已知:完全二叉树叶子结点只可能在最下两层

    结点最多情况:1~6层构成满二叉树,则其结点总数(该满二叉树)为26-1=63个

    第6层有26-1=32个

    其中,有8个叶子结点,则32-8=24个非叶子结点

    非叶子结点有2个孩子(考虑最多)均在第7层为叶子结点

    第7层有2×24=48个叶子结点

    (总结点个数)max=48+63=111个


    结点最少情况:第6层为倒数第1层

    1~5层构成满二叉树,结点总数25-1=31个

    其中,第6层为8个叶子结点

    (结点总个数)min=31+8=39个

    3、一颗有124个叶子结点的完全二叉树最多有多少个结点?

    27-1=64,28-1=128,结论:完全二叉树不是满二叉树,因此完全二叉树有8层,除去底层,此二叉树有27-1=127个结点

    设n为最底层结点个数。则:

    n为偶数,n+64-n/2=124,n=120,则此树共有127+120=247个结点

    n为奇数,n+64-(n+1)/2=124,n=121,则此树共有127+121=248个结点

    4、具有1000个结点的完全二叉树的次底层的叶子结点个数为多少?

    由log2(n+1)可以算出:1000个结点的完全二叉树有10层

    该树上面9层是满的,有29-1=511个结点

    由n0=n2+1,n0+n2为奇数,当n为偶数时,n1=1

    所以,n=n0+n1+n2=2n0-1+n1=1000 得出n0=500

    其中,有1000-511=489分布在第10层,11个分布在第9层

    所以,次底层叶子结点个数为11

    5、若在一颗完全二叉树中对所有结点按层次自上向下,同一层次自左向右进行编号,根结点编号为0,现有两个不同的结点,它们的编号为q和p,那么判断它们在同一层的条件应该是?

    按照公式,编号为i(从0开始)的结点所在层号为log2(i+1)

    当两个结点位于同一层,就有[log2(p+1)]+1=[log2(q+1)]+1,即[log2(p+1)]=[log2(q+1)]

    若编号从1开始,则[log2(p)]=[log2(q)]

    6、含有60个叶子结点的二叉树的最小高度为多少?

    n0=60 ,n2=n0-1=59

    n=n0+n1+n2=119+n1

    当n1=0为完全二叉树,高度最小

    h=log2(n+1)=log2120=7

    所以最小高度为7

    7、已知一颗满二叉树结点个数为20~40,此二叉树叶子结点有多少个?

    已知:一颗满二叉树结点个数为2h-1

    即20≤2h-1≤40

    h=5

    则叶子结点在最底层为:25-1=16个

  • 相关阅读:
    js去掉字符串前后空格三种方法及最佳方案
    javascript笔记:Date对象及操作方法
    高性能网站建设指南总结
    javascript之词法作用域及函数的运行过程
    LETTers比赛第四场N!
    LETTers比赛第三场 1003 大明A+B解题报告
    LETTers比赛第三场 1004 Max Sum Plus Plus 解题报告
    LETTers比赛第三场 1002 Ignatius and the Princess III解题报告
    LETTers第五场Sleeping 解题报告
    LETTers比赛第四场N!的最高位
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/13278348.html
Copyright © 2011-2022 走看看