数据结构-树的概念

    

    树是由n(n>=0)个有限节点组成一个具有层次关系的集合。常见的树有平衡二叉树、二叉查找树、平衡二叉查找树(AVL树、黄黑树)、完全二叉树、满二叉树等。

常见概念
  • 节点高度,节点到叶子节点的最厂路径

  • 节点深度,根节点到该节点的边的个数

  • 节点层次,深度+1

  • 树的高度,根节点的高度

树的存储方式
  • 链式存储

  • 数组存储(x位于i,则i * 2=左子树,i * 2+1=右子树)

   

满二叉树
  • 叶子节点在最后一层

  • 叶子节点外,所有节点都有左右子树

完全二叉树
  • 叶子节点在最后2层

  • 最后一层叶子靠左

  • 其他层节点数最大

完全二叉树性质(根节点为0,用数组保存完全二叉树)
  • 下标i的左子节点下标:2 * i + 1

  • 下表i的右子节点下标:左下标+1

  • 最后一个非叶子节点下标:n/2-1

二叉查找树
  • 对于任意节点,左子树的每个节点小于该节点

  • 对于任意节点,右子树的每个节点大于该节点

平衡二叉树
  • 任意节点左右子树高度相差不能大于1
平衡二叉查找树
  • 平衡二叉树的特征

  • 二叉查找树的特征

  • 完全二叉树

  • 每个节点大于等于(或小于等于)子树中每个节点的值

堆的操作
  • 堆化:插入

  • 删除堆顶元素

堆排序
  • 建堆,可以从上往下堆化,或从下往上堆化

  • 排序,取堆顶,与末尾交换然后堆化,继续取堆顶,与末尾交换,再堆化

堆的应用
  • 优先级队列

  • TOP K 问题

  • 求中位数