数据结构和算法- 树和二叉树

597 阅读2分钟

树结构在客观世界中的应用,例如族谱,公司架构等

只有根结点的树

一般树

树结构中的高度、深度、层数

  • 高度:叶结点到根结点的最长的边数
  • 深度:根结点到叶结点的最长的边数
  • 层数:从根开始定义,根为第一层,根的孩子为第二层...
  • 度:某个节点的度,就是该节点拥有子节点的数量。上图,节点[A]的度=2, 节点[B]的度=2,节点[D]的度是2、节点[K]到节点[G]的度为0.
  • 叶结点:度为0的结点称为叶结点或终端结点
  • 结点间的关系:
    • 结点的子树的根,称为该结点的孩子结点,该结点也是孩子结点的双亲结点;
    • 同一双亲结点下的孩子结点为兄弟结点
    • 该结点下所有子树的任一结点为该结点的子孙结点
  • 结点的次序:从左向右

我们从上图可以发现

  • 在第i层上,有2^i-1个节点

  • 最大深度为k时,整个二叉树最多有 2k-1 个节点

  • 终端节点数 = 度为2的节点数+1;(终端节点就是叶子节点,度为0的节点)

  • 有n个节点完全二叉树,深度 = log_2n+ 1

  • 有n个节点的完全二叉树,从根节点开始标号,标号i从1开始,如上面的完全二叉树,那么

    • i>1,i节点的双亲节点为i/2;
    • 如果i=1,那么序号为i的结点为根节点,无双亲结点
    • 如果2i<=n,那么序号为i的结点的左孩子结点序号为2i
    • 如果2i>n,那么序号为i的结点无左孩子
    • 如果2i+1<=n,那么序号为i的结点右孩子序号为2i+1
    • 如果2i+1>n,那么序号为i的结点无右孩子

二叉树

每个节点有且最多只有两个节点的树叫做二叉树

特殊二叉树-斜树

所有结点都只有左子树或者右子树,那么分别称之为左斜树/右斜树

特殊二叉树-满二叉树

满二叉树:所有的结点都有两个子树,并且叶子结点都在同一层。(整体看来是左右对称的)

特殊二叉树-完全二叉树

完全二叉树的所有结点与同样深度的满二叉树,按照层序编号相同的结点,是一一对应的。

完全二叉树的判断

二叉树的遍历 - 前序遍历

二叉树的遍历 - 中序遍历

二叉树的遍历 - 后序遍历

二叉树的遍历 - 层序遍历