树的相关知识点

  • 节点、根节点、父节点、子节点、兄弟节点
  • 一棵树可以没有任何节点,称为空树
  • 一棵树可以只有一个节点,也就是只有根节点
  • 子树、左子树、右子树
  • 节点的度:子树的个数
  • 树的度:所有节点度中的最大值
  • 叶子节点:度为0的节点

层数:根节点在第一层,根节点的子节点在第二层,以此类推

  • 节点的深度:从根节点到当前节点的唯一路径上的节点总数
  • 节点的高度:从当前节点到最远节点的路径上的节点总数
  • 树的深度:所有节点深度中的最大值
  • 树的高度:所有节点高度中的最大值
  • 树的深度等于高度

有序树、无序树

  • 二叉树 是一个有序树

    (1) 每个节点的度最大为2
    (2)左子树和右子树是有顺序的
    (3)即使某节点只有一棵子树,也要区分左右子树

  • 非空二叉树的第i层,做多有2^(i-1)个节点

  • 在高度为h的二叉树上最多有2^h-1个结点

  • 对于人任何一颗非空二叉树,如果叶子节点个数为n0,度为2的节点个数为n2,则有:n0=n2+1;

  • 度为1的节点个数为n1,那么二叉树的节点总数n=n0+n1+n2;

  • 二叉树的边数T=n1+2*n2=n-1=n0+n1+n2-1;

真二叉树:所有节点的度要么为0,要么为2

满二叉树:所有节点的度都要么为0,要么为2,所有叶子节点在最后一层

完全二叉树:叶子节点只会出现最后2层,且最后1层的叶子结点都靠左对齐

  • 度为1的节点只有左子树

  • 度为1的节点要么是1个,要么是0个

  • 同样节点的二叉树,完全二叉树的高度最小

  • 设二叉树的 高度为h,h>=1,那么

    (1)至少有2^(h-1)个节点

    (2)最多有2^h-1个节点

    (3)总结点为n,h-1<= log2(h)<h

    h=floor(log2h)+1,floor向下取整,只取前面的整数。ceiling向上取整

  • 总结点数量n=n0+n1+n2,而且n0=n2+1=>n=2n0+n1-1

  • 完全二叉树的n1要么为0,要么为1

    (1)n1为1时,n=2n0,n必然是偶数
    叶子节点个数n0=n/2,非叶子节点个数n1+n2=n/2
    (2)n1为0时,n=2n0-1,n必然是奇数
    叶子节点个数n0=(n+1)/2,非叶子节点个数n1+n2=(n-2)/2

  • n如果是偶数 叶子节点数量n0=n/2

  • n如果是奇数 叶子节点数量n0=(n+1)/2

  • n0=floor((n+1)/2) n0=(n+1)>>1

注意:尽量避免使用乘、除/、模%、浮点数运算,效率低下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。