数据结构和算法总结

一、二叉查找树

也称有序二叉树,它是指一棵空树,或者满足以下性质的树:

  • 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 任意节点的左、右子树也分别为二叉查找树。
  • 没有键值相等的节点(no duplicate nodes)

二叉查找树的高度为lgn,时间复杂度为O(lgn),最坏情况是退化成一条链表,时间复杂度O(n)

二、红黑树

二叉查找树,时间复杂度O(logn)(红黑树的高度至多为2log(n+1))。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。性质:

  1. 每个结点要么是红的要么是黑的。  
  2. 根结点是黑的。  
  3. 每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。  
  4. 如果一个结点是红的,那么它的两个儿子都是黑的。  
  5. 对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点

  1. 通过对结点进行重新着色,以及对树进行相关的旋转操作,即通过修改树中某些结点的颜色及指针结构,来达到对红黑树进行插入或删除结点等操作后继续保持它的性质或平衡的目的。树的旋转分为左旋和右旋(插入最多两次旋转,删除最多三次旋转)
  2. 红黑树的插入分为几个过程:1)将红黑树当作一颗二叉查找树,将节点插入;2)将节点着色为红色;3)通过旋转和重新着色等方法来修正该树,使之重新成为一颗红黑树

猜你喜欢

转载自blog.csdn.net/qq_33314107/article/details/81158171
今日推荐