stack queue and list

文章目录

tree

一棵树是由N个节点和N - 1条边组成。

  • 没有子节点的节点叫做树叶(leaf)

  • 根节点为root

  • 如果存在一个路径从n1到n2,则n1是n2的一位祖先(ancestor),n2是n1的一位后裔(descendant)

  • 对于任意节点ni,ni的深度(depth)是从根到ni的唯一路径的长,ni的高度(height)是从ni到一片树叶的最长路径的长。因此根的深度为0,所有树叶的高度为0

  • 先序遍历(preorder traversal),对节点的处理工作是在它诸多儿子节点被处理之前(pre)进行的。

  • 后序遍历(postorder traversal),对节点的处理工作是在它诸多儿子节点被计算之后进行的

  • 中序遍历(inorder traversal),左,节点,右

二叉树(binary tree)

  • 平均二叉树的平均深度为 O(N^1/2),二叉查找树深度平均值为 O(logN)
  • 具有N个节点的二叉树都将需要N + 1个NULL指针 (可以由 2N条边(满)减去 N-1条边(实际)来获得)

二叉查找树

对于树中的每一个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树种所有关键字值大于X的关键字值

复杂度

除了MakeEmpty外,其他操作基本都在 O(logN)

  • 一棵树的所有节点的深度的和称为内部路径长

AVL

  • 左-左、右-右:单旋转
  • 右-左、左-右:双旋转

B-树

阶为M的B-树是一棵具有下类结构特性的树

  • 树的根或者是一片树叶,或者其儿子数在2-M之间
  • 除树根和树叶外,其他节点的儿子数在 M / 2 到 M 之间
  • 所有树叶都在同一深度上

B-树的深度最多是logM/2(N)

分享到: