[树] 二叉树的复习

Prerequisites


等比数列前n项求和
  1. log运算法则

满二叉树 vs 完全二叉树


  • 深度为k的满二叉树的节点总数:
    2^0 + 2^1 + 2^2 + ... + 2 ^(k-1) = 2^k - 1
  • 完全二叉树(除最后一层的右边一些节点缺失外,其余的每层节点数均为最大).
  • 满二叉树的节点总数:
树高 节点总数
1 1
2 3
3 7
k 2^k - 1
  • exam 01 随手搜到的一个题目帮助理解。
    解析见这里
一个完全二叉树共有699个节点,则该二叉树的叶子节点数目是: B
  A. 349     B.350     C.255    D.351
  • exam 02
完全二叉树有2*n-1 的节点,则它的叶子节点数为?(这题完全跟上面一样)

答案为n.
设树高为k,最后一层节点数目为m。 则该树的节点总数2^(k-1) - 1 + m = 2n-1 >> 2^(k-1) + m = 2n >>2^(k-1)/2 + m/2 = n
该树的叶子节点总数为m + 2^(k-2) - m/2 = 2^(k-1)/2 + m/2 = n.
疑问 - exam 02反之也成立吗?

  • exam 03
完全二叉树有n个叶子节点,则它的节点总数为?

答案确实可以,按上面的思路设一个树高k,设最后一层点的数目m,最后确实可以化简为只与n相关的节点总数(2n-1)。

  • exam 04
    04.1 给定一完全二叉树root,求其节点总数.
    04.2 给定一二叉树root,判断其是否为完全二叉树.
  • exam 05
    对于普通二叉树,给定2个节点Node0,Node1,求这个两个节点的距离.所谓的距离即连接这俩节点的边数.

你可能感兴趣的:([树] 二叉树的复习)