二叉树基础知识

  1. 在二叉树的第 i 层上,至多有 2^(i - 1)个节点(i>=1)。
  2. 深度为k的二叉树至多有2^(k) - 1个 节点。
  3. 对于任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。
  4. 一棵深度为k且有2^k – 1 个结点的二叉树成为满二叉树。特点是每一层上的结点数都是最大结点数。
  5. 可以对满二叉树的结点进行连续编号,约定编号从根节点起,自上而下,自左至右。由此可引出完全二叉树的定义。深度为k的,有n个结点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称之为完全二叉树。
  6. 具有n个结点的完全二叉树的深度为(log n)↓ + 1。(↓ 为向下取整)。
  7. 如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i (1<i<n),有
    1. )如果 i = 1,则结点i是二叉树的根,无双亲。如果 i > 1,则其双亲是结点(i / 2)↓ 。
    2. )如果 2i > n,则结点i无左孩子(结点 i 为叶子节点);否则其左孩子为结点 2i。
    3. )如果 2i + 1 > n,则结点 i 无右孩子;否则其右孩子是结点 2i + 1。
  8. 二叉树的存储结构
    1. )二叉树既可以用顺序存储结构,即用一个数组来存储(参照满二叉树的标号,此种存储方式浪费空间);
    2. )也可以采用链式存储结构,链式最常用的为二叉链表,其次为三叉链表,前者非递归遍历的时候需要使用一个自设的栈,后者遍历的时候因存储结构中已存有遍历所需的足够信息,遍历过程中不需要另设栈。
      二叉树结构
  9. 二叉树的递归遍历
    1. )分为前序遍历,中序遍历,后续遍历三种。这里为中序遍历:
      递归遍历
  10. 二叉树的非递归遍历
    1. )方法1(中序遍历)
      非递归1
    2. 方法2(中序遍历)
      非递归2 
  11. 不论按照哪一种次序进行遍历,对含n个结点的二叉树,其时间复杂度均为o(n)。所需的辅助空间为遍历过程中栈的最大容量,即树的深度,最坏情况下为n,则空间复杂度也为o(n)。
原文地址:https://www.cnblogs.com/younes/p/1794162.html