Skip to content

2025-07-27-二叉树

重要性质

  1. 根节点的层数1,那么第 i 层的节点个数最多为 2i1

  2. 只有根节点的深度为 1,那么深度为 k 的总节点的个数最多为 2k1

  3. 二叉树 叶子节点的个数 = 度为 2 的节点个数 + 1N0=N2+1

    N 为节点总个数,E 是边的总数,N0 为度为 0 的节点, N1 为度为 1 的节点, N2 为度为 2 的节点

    由于 除了根节点以外的的节点都有且只有一个父节点,所以 E=N1

    显然 E=0N0+1N1+2N2

    得出 N1+2N2=N1=N0+N1+N21

    所以 N2=N01

  4. 具有 n 个节点的二叉树,它的深度 klog2n+1 的向上取整

  5. 具有 n 个节点的二叉树,若从 0 开始标记下标,从上到下,从左到右依次取下标,那么满足以下的性质

    • 如果父亲节点的下标p,那么左孩子节点的下标2p+1右孩子节点的下标2p+2
    • 如果孩子节点的下标c, 那么父亲节点的下标c12 (忽略小数,只保留整数)
    • 由于有效的下标 i 是要满足 i<n 这个条件,那么如果 2p+1n 或者 2p+2n,就说明没有左/右孩子

问题

在具有 2n 个结点的完全二叉树中,叶⼦结点个数为( )

  • 问题

    text
    2.在具有 2n 个结点的完全⼆叉树中,叶⼦结点个数为( )
    A n
    B n+1
    C n-1
    D n/2
  • 解释:
    问题-在具有2n个结点的完全二叉树中,叶⼦结点个数为-解释
    问题-在具有2n个结点的完全二叉树中,叶⼦结点个数为-解释
    1. 节点为偶数个的完全二叉树的 度为 1 的节点个数为 1

    2. 二叉树 叶子节点的个数 = 度为 2 的节点个数 + 1

    3. 计算出结果:

      {N0=N2+12n=N0+N1+N22n=2N2+N1+1

      答案选 A

  • 总结:但凡要计算节点的都需要想到 N0=N2+1 这个公式

判断⼀棵树是不是完全⼆叉树

思路: 可以借鉴二叉树的层序遍历的思想

  1. 创建一个队列,存储二叉树的根节点
  2. 获取并移除队头元素,存储这个元素的左右节点
  3. 反复执行这个操作,直到获取到 null 这个元素
  4. 遍历队列剩余节点,如果全是 null, 那么就返回 true,否则返回 false

代码: