数据结构与算法3- 二叉搜索树

数据结构与算法3- 二叉搜索树

1. 二叉搜索树的定义:

  • 二叉搜索树是一颗二叉树,能够为空。知足如下性质:
    • 非空左子树的全部键值小于其根节点的键值
    • 非空右子树的全部键值大于其根节点的键值

2. 二叉搜索树的基本操做:

  • 查找最小值:在树的最左分支的端节点上
  • 查找最大值:在树的最右分支的端节点上
  • 查找:
    • S1. 若是搜索树为空,返回false
    • S2. 若是树非空,根节点键值与X比较:
      • S2.1 键值小于X,则转向右子树
      • S2.2 键值大于X,则转向左子树
      • S2.3 二者相等,搜索完成,返回true
    • 特征:查找的路径是一条从根到某一叶节点的路径
  • 插入节点:
    • 在树中查找待插入的元素值
      • 若是存在,则放弃操做
      • 若是不存在,则查找终止的位置就是X应该插入的位置
  • 删除节点:须要考虑3中状况
    • CASE1. 删除叶节点:直接删除,而后修改其父节点中指向子节点的指针为null
    • CASE2. 删除只有一个子节点的节点:将该节点的父节点的指针指向子节点
    • CASE3. 删除有左右子节点的节点:首要目标是保持二叉树的有序性
      • Solution1. 选取右子树中的最小元素替代
      • Solution2. 选取左子树中的最大元素替代
      • 上述两种元素均最多只有一个子节点(不然最大/小不成立)
      • 而后再在节点的右/左子树中删除交换后的节点(回归到CASE1/2)
相关文章
相关标签/搜索