关于 BST
  • 板块学术版
  • 楼主robinyqc
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/3/24 20:23
  • 上次更新2023/10/23 20:40:34
查看原帖
关于 BST
338632
robinyqc楼主2023/3/24 20:23

今天学习二叉搜索树的时候,在删除节点的章节看到了两种写法。

  • 第一种写法是记录该节点值存在的次数 cntcnt。然后直接惰性删除。方法来自 Pecco 算法学习笔记(45): 二叉搜索树

    这里直接采取惰性删除的方法:找到要删除的数,令其计数-1。这样写起来比较简单,不用进行较复杂的分类讨论,而且不会增加时间复杂度。

  • 第二种写法是来自 OI Wiki 以及 lyd 蓝书的写法。笼统地说,它们进行了替换。OI Wiki 二叉搜索树 & 平衡树

    oo 为叶子节点,直接删除该节点即可。 若 oo 为链节点,即只有一个儿子的节点,返回这个儿子。 若 oo 有两个非空子节点,一般是用它左子树的最大值或右子树的最小值代替它,然后将它删除。

感觉第一个方法要好写一些。请问一下,当应用在平衡树中的时候,哪一个效率好一些?或者说,这两种方法有没有可能其中之一会被卡?

2023/3/24 20:23
加载中...