二叉树-详解二叉排序树


BST查找时间复杂度

h: 树的高度

$O(h)$

最坏情况下:n个结点,高度为n的树,时间复杂度 $O(n)$

BST删除结点

遍历的时候,用pre记录下查找结点的父结点,用于删除结点

考虑三种情况:

  1. 要删除的结点是叶节点

    父节点指向NULL,删除当前节点,

  2. 要删除的结点是非叶节点,有一个孩子

    直接将子节点连接至父节点,删除当前结点

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/92abcf7f-b98a-4ce0-81b8-554e3155a8aa/Untitled.png

  3. 要删除的结点是非叶节点,有两个孩子

    找中序后继,覆盖当前结点的值,删除中序前驱

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/467433d9-a3d3-4bb6-8b4b-2fb6e7027462/Untitled.png