首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在删除函数调用后指针没有将BST的节点置零?

在删除函数调用后,指针没有将BST的节点置零的原因是因为在删除节点时,只是将节点从树中移除,并没有对指针进行置零操作。这是因为在删除节点时,只需要将其父节点指向其子节点即可完成删除操作,不需要对被删除节点的指针进行修改。

BST(二叉搜索树)是一种特殊的二叉树,它的每个节点的值大于其左子树中的所有节点的值,小于其右子树中的所有节点的值。在删除节点时,有以下几种情况需要考虑:

  1. 被删除节点没有子节点:直接将其父节点指向空即可。
  2. 被删除节点只有一个子节点:将其父节点指向其子节点即可。
  3. 被删除节点有两个子节点:需要找到其右子树中的最小节点(或左子树中的最大节点),将其值替换到被删除节点中,然后再删除该最小节点(或最大节点)。

在以上情况中,只有第一种情况需要将指针置零,其他情况只需要修改指针的指向即可。这是因为在删除节点后,BST的结构并没有发生改变,只是节点的值发生了变化或者节点的位置发生了调整。

需要注意的是,删除节点时需要保证BST的性质仍然成立,即左子树中的所有节点的值小于根节点的值,右子树中的所有节点的值大于根节点的值。如果删除节点后没有进行相应的调整,可能会导致BST的性质被破坏。

推荐的腾讯云相关产品:腾讯云数据库TDSQL、腾讯云云服务器CVM、腾讯云容器服务TKE、腾讯云对象存储COS等。具体产品介绍和链接地址可以参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

算法与数据结构(十) 二叉排序树的查找、插入与删除(Swift版)

在上一篇博客中,我们主要介绍了四种查找的方法,包括顺序查找、折半查找、插入查找以及Fibonacci查找。上面这几种查找方式都是基于线性表的查找方式,今天博客中我们来介绍一下基于二叉树结构的查找,也就是我们今天要聊的二叉排序树。今天主要聊的是二叉排序树的查找、插入与删除的内容,二叉排序的创建过程其实就是不断查找与插入的过程,也就是说当我们在创建二叉排序树时,我们会先搜索该节点在二叉排序树中的位置,若没有找到该节点则返回该节点将要插入的父节点,然后将该结点插入。而二叉排序树结点的删除则有些复杂,分为几种情况讨

07

数据结构与算法——2-3树

前面讲到了二叉搜索树 (BST) 和二叉平衡树 (AVL) ,二叉搜索树在最好的情况下搜索的时间复杂度为 O(logn) ,但如果插入节点时,插入元素序列本身就是有序的,那么BST树就退化成一个线性表了,搜索的时间复杂度为 O(n)。 如果想要减少比较次数,就需要降低树的高度。在插入和删除节点时,要保证插入节点后不能使叶子节点之间的深度之差大于 1,这样就能保证整棵树的深度最小,这就是AVL 树解决 BST 搜索性能降低的策略。但由于每次插入或删除节点后,都可能会破坏 AVL 的平衡,而要动态保证 AVL 的平衡需要很多操作,这些操作会影响整个数据结构的性能,除非是在树的结构变化特别少的情形下,否则 AVL 树平衡带来的搜索性能提升有可能还不足为了平衡树所带来的性能损耗。 因此,引入了 2-3 树来提升效率。2-3 树本质也是一种平衡搜索树,但 2-3 树已经不是一棵二叉树了,因为 2-3 树允许存在 3 这种节点,3- 节点中可以存放两个元素,并且可以有三个子节点。

01
领券